情報基礎A 第14週プログラミング 実際のデータ処理での応用(2) 徳山 豪・全 眞嬉 東北大学情報科学研究科 システム情報科学専攻 情報システム評価学分野 1 重要 : ファイルの再ダウンロード • 以前ダウンロードした「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年の商品別,都道府県別売上数を求めて下さい 2 年間売上原価の計算 売上原価 = 売上個数 × 仕入単価 Sub genkakeisan() Msgbox Worksheets(“年間売上数”).Cells(4, 2) * Worksheets("価格").Cells(4, 2) End sub 3 年間売上原価の計算 仕入単価は4列に あるので 行番号は固定 年間売上原価を出力する シートとセルを指定 売上原価 = 売上個数 × 仕入単価 Worksheets("年間売上原価").Cells(4, 2) = Worksheets(“年間売上数”).Cells(4, 2) * Worksheets("価格").Cells(4, 2) 4 演習1:年間売上原価を求める • 都道府県別 – 47県 (4行~50行) • 商品別 – 10品 (2列~11列) For 都道府県 For 商品 Next Next 5 年間売上原価の計算 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 6 演習2:年間売上高の計算 • 年間売上原価の計算をヒントに作成して下さい • 結果は「年間売上高」シートに出力 • Sub uriagetaka() 年間売上高を出力する シートとセルを指定 仕入単価は4列に あるので 行番号は固定 年間売上高 = 売上個数 × 販売価格 Worksheets(“年間売上高").Cells(4, 2) = Worksheets(“年間売上数”).Cells(4, 2) * Worksheets("価格").Cells(5, 2) 7 演習3:年間売上総利益を求める • 「年間売上高」と年間売上原価」を利用して求める • 結果は「年間売上総利益」シートに出力 • Sub uriagesorieki() 年間売上総利益を出力する シートとセルを指定 年間売上総利益 = 年間売上高 - 年間売上原価 Worksheets(“年間売上総利益").Cells(4, 2) = Worksheets(“年間売上高”).Cells(4, 2) - Worksheets(“年間売上原価").Cells(4, 2) 8 最大値を求める(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 次へ進む 終了 9 最大値と最大値がある行番号参照 最大値を持つ県が複数個ある場合(共同 • 「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 10 演習4:月間売上数トップ • 最大値を求めてその県名を出力するプログラム – 月別,商品別の売上数が最大値である県の名前を「統 計」シートの「月間売上数トップ」表にまとめて出力するプ ログラム – sub gekkantop() 11 月別,商品別の売上数が最大値である 県の名前を出力するプログラム 商品10 10回 12月 北海道の売上数 商品1 3月商品10の売上数 1月 10回 12月 北海道の売上数 北海道の売上数 沖縄の売上数 1月 北海道の売上数 1月売上トップ 県名出力 沖縄の売上数 47回 沖縄の売上数 沖縄の売上数 12 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を利用する 13 演習5:月間売上数ワースト • 最小値を求めてその県名を出力するプログラム – 月別,商品別の売上数が最小値である県の名前を「統 計」シートの「月間売上数ワースト」表にまとめて出力する プログラム – Sub gekkanworst() 14 演習6:年間売り上げトップ • 年間売り上げトップを求めるプログラム – 「統計」のシート「年間売上数トップ」表 • 商品ことの年間売上数がトップの県の名前を出力するプログラム • Sub nenkan_uriagesu_top() – 「統計」のシート「年間売上高トップ」表 • 商品ことの年間売上高がトップの県の名前を出力するプログラム • Sub nenkan_uriagetaka_top() – 「統計」のシート「年間売上総利益トップ」表 • 商品ことの年間売上総利益がトップの県の名前を出力するプロ グラム • Sub nenkan_sorieki_top() 15 レポート • 授業でのエクセルプログラム提出 – program1.xls – 授業中に作ったプログラムでよい • 欠席の場合は、自分でその分を追加すること – 締め切り:7月30日 • 売上データ処理プログラム – – – – 前回、今回の内容 課題プログラム data18.xls 締め切り:8月3日 16
© Copyright 2025 ExpyDoc