情報基礎A 第13週プログラミング 実際

情報基礎A
第14週プログラミング
実際のデータ処理での応用(2)
徳山 豪・全 眞嬉
東北大学情報科学研究科
システム情報科学専攻
情報システム評価学分野
1
年間売上原価の計算
売上原価 = 売上個数 × 仕入単価
Sub genkakeisan()
Msgbox Worksheets(“年間売上数”).Cells(4, 2) * Worksheets("価格").Cells(4, 2)
End sub
2
年間売上原価の計算
仕入単価は4列に
あるので
行番号は固定
年間売上原価を出力する
シートとセルを指定
売上原価 = 売上個数 × 仕入単価
Worksheets("年間売上原価").Cells(4, 2)
= Worksheets(“年間売上数”).Cells(4, 2) * Worksheets("価格").Cells(4, 2)
3
演習1:年間売上原価を求める
• 都道府県別
– 47県 (4行~50行)
• 商品別
– 10品 (2列~11列)
For
都道府県
For
商品
Next
Next
4
年間売上原価の計算
Sub uriagegenka()
‘年間売上原価の計算
Dim i As Integer ‘県の変数(行)
Dim j As Integer ‘商品の変数(列)
For i = 4 To 50
'47都道府県
For j = 2 To 11
'10種類の商品
Worksheets("年間売上原価").Cells(i, j)
= Worksheets("年間売上数").Cells(i, j) * Worksheets("価格").Cells(4, j)
Next j
Next i
End Sub
5
演習2:年間売上高の計算
• 年間売上原価の計算をヒントに作成して下さい
• 結果は「年間売上高」シートに出力
• Sub uriagetaka()
年間売上高を出力する
シートとセルを指定
仕入単価は4列に
あるので
行番号は固定
年間売上高 = 売上個数 × 販売価格
Worksheets(“年間売上高").Cells(4, 2)
= Worksheets(“年間売上数”).Cells(4, 2) * Worksheets("価格").Cells(5, 2)
6
演習3:年間売上総利益を求める
• 「年間売上高」と年間売上原価」を利用して求める
• 結果は「年間売上総利益」シートに出力
• Sub uriagesorieki()
年間売上総利益を出力する
シートとセルを指定
年間売上総利益 = 年間売上高 - 年間売上原価
Worksheets(“年間売上総利益").Cells(4, 2)
= Worksheets(“年間売上高”).Cells(4, 2)
-
Worksheets(“年間売上原価").Cells(4, 2)
7
最大値を求める(If文を使う)
• 「1月」の「商品1」の売上数の最大値は?
Sub saidai()
‘1月の商品1の売上数の最大値
Dim i As Integer
‘県の変数
Dim saidai As Long ‘最大値の変数Long (長整数型)
saidai = Worksheets(“1月”).Cells(4, 2)
‘セルB4の値を変数 saidai の初期値とする
For i = 5 To 50
Integer (整数型)
-32,768
~32,767
Long(長整数型)
-2,147,483,648
~ 2,147,483,647
For分の中にIf文を使う
‘B5~B50まで比較する
yes
If (saidai < Worksheets(“1月”).Cells(i, 2)) Then
saidai = Worksheets("1月").Cells(i, 2)
End If
Next i
MsgBox saidai
End Sub
saidai < cells(i,2)
saidai
変数に
格納
No
次へ進む
終了
8
最大値と最大値がある行番号参照
最大値を持つ県が複数個ある場合(共同
• 「1月」の「商品1」の売上数が最大である県名は?
トップ)は,読まれる順序が
遅い県名を出力する.
‘1月の商品1の売上数が最大である県名と最大値を出力
例
Dim i As Integer
‘県の変数
2月の商品6の売上トップは
Dim saidai As long
‘最大値の変数
茨城県(251個),東京都(251個) .
Dim rownum As Integer ‘最大値の行番号を覚えておく変数
saidai = Worksheets(“1月”).Cells(4, 2) 2月商品6の売上トップとして出力するのは
「東京都」
‘セルB4の値を変数 saidai の初期値とする
Sub saidaiken()
For i = 4 To 50 ‘B4~B50まで比較する(最大値がある行番号を覚えさせるため)
If (saidai =< Worksheets("1月").Cells(i, 2)) Then
saidai = Worksheets("1月").Cells(i, 2)
rownum = i
‘最大値がある行番号を代入
End If
Next i
MsgBox Worksheets(“1月”).Cells(rownum, 1) & “ : ” & saidai
‘最大値がある行番号を参照し,売上数最大だった県名とその売上数を出力
End Sub
9
演習4:月間売上数トップ
• 最大値を求めてその県名を出力するプログラム
– 月別,商品別の売上数が最大値である県の名前を「統
計」シートの「月間売上数トップ」表にまとめて出力するプ
ログラム
– sub gekkantop()
10
月別,商品別の売上数が最大値である
県の名前を出力するプログラム
商品10
10回
12月
北海道の売上数
商品1
3月商品10の売上数
1月
10回
12月 北海道の売上数
北海道の売上数
沖縄の売上数
1月
北海道の売上数
1月売上トップ
県名出力
沖縄の売上数
47回 沖縄の売上数
沖縄の売上数
11
Sub gekkantop()
‘月別,商品別の売上数が最大値である県の名前を出力
Dim i As Integer
‘月(行番号)の変数
Dim j As Integer
‘商品(列番号)の変数
Dim saidai As Long
‘最大値に対する変数
Dim rownum As Integer
‘最大値の行番号を覚えておく変数
For j = 2 To 11
For tsuki = 1 To 12
saidai = Worksheets(tsuki & "月").Cells(4, j)
For i = 4 To 50
If (saidai = < Worksheets(tsuki & "月").Cells(i, j)) Then
saidai = Worksheets(tsuki & "月").Cells(i, j)
rownum = i
End If
Next i
Worksheets("統計").Cells(tsuki + 3, j) = Worksheets(tsuki & "月").Cells(rownum, 1)
Next tsuki
Next j
End Sub
出力する場所は「統計」シート4行から15行までの12ヶ月分
なので出力する際の行番号は変数tsukiを利用する
12
演習5:月間売上数ワースト
• 最小値を求めてその県名を出力するプログラム
– 月別,商品別の売上数が最小値である県の名前を「統
計」シートの「月間売上数ワースト」表にまとめて出力する
プログラム
– Sub gekkanworst()
13
演習6:年間売り上げトップ
• 年間売り上げトップを求めるプログラム
– 「統計」のシート「年間売上数トップ」表
• 商品ことの年間売上数がトップの県の名前を出力するプログラム
• Sub nenkan_uriagesu_top()
– 「統計」のシート「年間売上高トップ」表
• 商品ことの年間売上高がトップの県の名前を出力するプログラム
• Sub nenkan_uriagetaka_top()
– 「統計」のシート「年間売上総利益トップ」表
• 商品ことの年間売上総利益がトップの県の名前を出力するプロ
グラム
• Sub nenkan_sorieki_top()
14
レポート
• 授業でのエクセルプログラム提出
– program1.xls
– 授業中に作ったプログラムでよい
• 欠席の場合は、自分でその分を追加すること
– 締め切り:7月30日
• 売上データ処理プログラム
–
–
–
–
前回、今回の内容
課題プログラム
data18.xls
締め切り:8月3日
15