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