人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

(至急教えて下さい)
エクセルでデータを集めた表を作ろうとしています。
セルの位置も全く同じの売上報告書フォームが一シートに一枚あります。それぞれに売上先や金額などが入力されています。
これを一つのシートで「売上先」とか「金額」について2次元の表に作り直したいと考えています。
シートが400枚ぐらいあって、手作業ではとてもできません。
マクロとか使うなら、そのマクロプログラムもそのまま掲載頂きたく・・・。
月曜日までにはなんとかしたいという勝手な事情ですが、どうぞお助けください!

●質問者: haohan
●カテゴリ:コンピュータ
✍キーワード:はと エクセル セル データ プログラム
○ 状態 :終了
└ 回答数 : 8/8件

▽最新の回答へ

1 ● Mook
●100ポイント

マクロでの実装例です。

先頭にシートを追加して、シートのタブで右クリック「コードの表示」で、下記を貼り付けて実行してみてください。


最初の2行の情報を適宜修正してから実行してください。

Const URISAKI_CELL = "C3" '2シート目以降の売り上げ先価格のセル位置
Const KINGAKU_CELL = "D3" '2シート目以降の金額のセル位置

Sub 集計()
 Range("B1").Value = "売上先"
 Range("C1").Value = "金額"
 
 Dim i
 For i = 2 To Worksheets.Count
 Cells(i, "B").Value = Worksheets(i).Range(URISAKI_CELL).Value
 Cells(i, "C").Value = Worksheets(i).Range(KINGAKU_CELL).Value
 Next
End Sub

コメントは有効にしてもらえると、多少は補足出来ます。

◎質問者からの返答

早速の回答有難うございます。

シートを良く見るとセルが結合されてます・・。

また、赤い数字の部分は、本当は関数による算出の結果です。

どうしたらよいのでしょうか。

4番目の方のお申し出に甘えて、見本のファイルをアップしてみました。

http://www.geocities.jp/pianziguang/mihon.xls

完成までに時間がなく、どうか助けてください。

(コメントを有効にする方法がわかりません・・・。)


2 ● SALINGER
●100ポイント

マクロでの回答です。

集計というシートを挿入して以下のマクロを実行。

Sub Macro1()
 Dim rowCount As Long
 Dim myWorksheet As Worksheet
 
 With Worksheets("集計")
 .Range("A1").Value = "売上先"
 .Range("B1").Value = "金額"
 
 rowCount = 2
 For Each myWorksheet In ThisWorkbook.Worksheets
 If myWorksheet.Name <> "集計" Then
 '以下のA1を売上先のセルに、B1を金額の入力されているセルに変更してください
 .Cells(rowCount, 1).Value = myWorksheet.Range("A1").Value
 .Cells(rowCount, 2).Value = myWorksheet.Range("B1").Value
 rowCount = rowCount + 1
 End If
 Next
 End With
End Sub
◎質問者からの返答

早速の回答有難うございました。

1番目の回答のような状態で、お手上げです。

もしよろしければ、見本ファイルをみていただけませんでしょうか。


3 ● thrillseeker
●100ポイント

マクロはシートの内容が分からないと作れませんので、

見本となるエクセルファイルを公開してはどうですか?

あるいは、「マクロの記録」をしながら1シート分の表作りを

手作業で行えば、目的のマクロが自動的に作成されます。

そのマクロにキーボードショートカットを割り付けておけば、

残り400枚のシートもかなり楽に処理出来るはずです。

http://www.juno-e.com/excel/macro/macro1.htm

◎質問者からの返答

アップしてみました。


4 ● memo77
●30ポイント

内容はダミーに書き換えてもいいので、実際のファイルを貰わないとわからないですね。

というより想像で回答すると時間使うので。

ダウンロードできるようにしてくれれば見てみてもいいですよ。

◎質問者からの返答

アップしてみましたので、よろしくお願いします。

http://www.geocities.jp/pianziguang/mihon.xls


5 ● SALINGER
●400ポイント

アップされたファイルから具体的に修正しました。

空白のシートは削除してください。空白行が入ります。

マージされたセルの位置は選択したときの名前ボックスというところで分かります。

Sub Macro1()
 Dim rowCount As Long
 Dim myWorksheet As Worksheet
 
 With Worksheets("集計")
 .Columns("D:D").NumberFormatLocal = "[$-411]ggge""年""m""月""d""日"";@"
 rowCount = 3
 For Each myWorksheet In ThisWorkbook.Worksheets
 If myWorksheet.Name <> "集計" Then
 .Cells(rowCount, 2).Value = myWorksheet.Range("H5").Value
 .Cells(rowCount, 3).Value = myWorksheet.Range("W5").Value
 .Cells(rowCount, 4).Value = myWorksheet.Range("BQ3").Value
 .Cells(rowCount, 5).Value = myWorksheet.Range("F9").Value
 .Cells(rowCount, 6).Value = myWorksheet.Range("AA20").Value
 .Cells(rowCount, 7).Value = myWorksheet.Range("AO16").Value
 .Cells(rowCount, 8).Value = myWorksheet.Range("AQ34").Value
 .Cells(rowCount, 9).Value = myWorksheet.Range("AQ44").Value
 .Cells(rowCount, 10).Value = myWorksheet.Range("AQ56").Value
 .Cells(rowCount, 11).Value = myWorksheet.Range("AQ62").Value
 .Cells(rowCount, 12).Value = myWorksheet.Range("AR69").Value
 .Cells(rowCount, 13).Value = myWorksheet.Range("AQ78").Value
 .Cells(rowCount, 14).Value = myWorksheet.Range("AQ82").Value
 .Cells(rowCount, 15).Value = myWorksheet.Range("AQ86").Value
 .Cells(rowCount, 16).Value = myWorksheet.Range("AQ90").Value
 rowCount = rowCount + 1
 End If
 Next
 End With
End Sub
◎質問者からの返答

本当に感謝の言葉も見当たりません。

このマクロのおかげで400枚ほどの全ての報告書を一気にまとめることができました。本当に、マクロの威力はすごいです。。。これを機会に私もすこし勉強しようと思います。

一つのブックに400枚すべてのシートが入らなかったので、いくつかにまとめるのに手間取りましたが、おかげさまで仕事をいま完了することができました。これがなかったら、いまごろ徹夜で日曜日も犠牲になっているところでした。

本日は他の仕事の都合でお返事が遅くなりまして申し訳ありませんでした。

感謝の気持ちはポイントで表したいと思います。

ありがとうございました。


1-5件表示/8件
4.前の5件|次5件6.
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ