- 締切済み
エクセルの内容をくっつける
例えば、下記のような販売売り上げ表が二つあります。 様式はまったくおなじです。 【販売売上表(1)】 日付 商品名 商品コード 単価 2009/10/25 マウス 001 \1000 2009/10/26 △△△ 002 \1500 【販売売上表(2)】 日付 商品名 商品コード 単価 2009/09/25 はさみ 004 \1000 2009/08/26 ○○○ 005 \1500 この二つの表を一つにしたいのです。 他のブックへ様式はそのままで販売内容が合わさるといった感じです。 日付 商品名 商品コード 単価 2009/10/25 マウス 001 \1000 2009/10/26 △△△ 002 \1500 2009/09/25 はさみ 004 \1000 2009/08/26 ○○○ 005 \1500 上記表へはそれぞれ二つずつしか販売内容はありませんが、 常に内容、件数が変動します。 しかも販売売上表が10コほど存在します。 毎回手作業でコピーペーストをおこない一つのファイルに まとめていたのですが、何かいい方法はないかと思い こちらに相談してみることにしました。 私の説明不足で分かりづらかったら申し訳ありません。。 よろしくお願いいたします。
- みんなの回答 (7)
- 専門家の回答
みんなの回答
- KURUMITO
- ベストアンサー率42% (1835/4283)
No6です。 For i = 1 To 3 の部分を For i = 1 To 10 に変更してください。
- KURUMITO
- ベストアンサー率42% (1835/4283)
次のようなマクロでできますね。ただし、マクロはデータをその都度、統合の操作をすることが必要です。関数の場合にはその必要がありません。 販売売上表は販売売上表(1)から販売売上表(10)までがそれぞれシート名として作成されているとします。 そこでSheet1がまとめの表となるようにします。 Sheet1の1行目には項目名を記入します。 エクセル2003では「ツール」から「マクロ」さらに「マクロ」を選択して、また、エクセル2007では「開発」タブから「マクロ」をクリックして、表示される画面でマクロ名には「データ統合」とでも入力し、「作成」ボタンをクリックします。 表示される画面の右側の窓には次のようなコードを入力します。 Sub データ統合() Set WS1 = Worksheets("Sheet1") Dim RowPosA As Long Dim RowPosB As Integer Dim ColumnPos As Integer Dim i As Integer Application.ScreenUpdating = False WS1.Range("A2:C20000") = "" RowPosA = 1 RowPosB = 1 For i = 1 To 3 Do RowPosA = RowPosA + 1 RowPosB = RowPosB + 1 For ColumnPos = 1 To 3 WS1.Cells(RowPosA, ColumnPos).Value = Worksheets("販売売上表(" & i & ")").Cells(RowPosB, ColumnPos).Value Next Loop Until Worksheets("販売売上表(" & i & ")").Cells(RowPosB, 1) = "" RowPosA = RowPosA - 1 RowPosB = 1 Next Application.ScreenUpdating = True End Sub このようにして作ったマクロを実行する際は、エクセル2003では「ツール」から「マクロ」さらに「マクロ」でマクロ名に「データ統合」を選択して「実行」キーをクリックします。 エクセル2007では「開発」タブから「マクロ」で上と同様の操作になります。
- tom04
- ベストアンサー率49% (2537/5117)
No.4です! たびたびすみません。 投稿した後でもう一度質問文を読ませてもらうと 販売売上表が10コもあるということですので、 前回の回答は無視してください。 数式で処理しようとすると私が回答した方法では途方もない数式になってしまいます。 一番簡単なのはマクロに記録することではないでしょうか? どうも何度もごめんなさいね。m(__)m
- tom04
- ベストアンサー率49% (2537/5117)
こんにちは! 一例ですが・・・ ↓に画像をアップしてみました。 Sheet1・Sheet2とも作業用の列を使わせてもらっています。 それをSheet3に表示するようにしてみました。 Sheet1(販売売上表1)・Sheet2(販売売上表2)とも E2セルに =IF(COUNTIF($C$2:C2,C2)=1,ROW(A1),"") という数式を入れ、オートフィルで下へコピーします。 Sheet3の数式が1000行まで対応できるようにしていますので、 1000行くらいまでコピーしても構いません。 そして、Sheet3のA2セルに =IF(COUNT('売上販売表(1)'!$E$2:$E$1000)>=ROW(A1),INDEX('売上販売表(1)'!A$2:A$1000,SMALL('売上販売表(1)'!$E$2:$E$1000,ROW(A1))),IF(COUNT('売上販売表(1)'!$E$2:$E$1000,'売上販売表(2)'!$E$2:$E$1000)>=ROW(A1),INDEX('売上販売表(2)'!A$2:A$1000,SMALL('売上販売表(2)'!$E$2:$E$1000,ROW(A1)-COUNT('売上販売表(1)'!$E$2:$E$1000))),"")) という数式を入れ、オートフィルで列方向と行方向にコピーすると 画像のような感じになります。 尚、セルの書式設定から表示形式はユーザー定義で設定しておいてください。 これでSheet1・Sheet2ともデータが増えてもSheet3に反映されるはずです。 最後にもう一手間かけないといけません。 商品コードの昇順で並び替えが必要だと思います。 数式の範囲指定はデータ量によってアレンジしてください。 以上、参考になれば幸いですが 他に良い方法があれば読み流してくださいね。m(__)m
- KURUMITO
- ベストアンサー率42% (1835/4283)
マクロを使って対応するのが簡単ですが、関数のみで行うとすれば次のようになるでしょう。 初めに販売売上表(3)までが有るとして、その方法を示します。 まとめのシートには1行目に項目名があるとします。 初めにそれぞれの販売売上表のシートのF列を作業列として販売売上表(1)のF2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(A2="","",IF(COUNT(A$2:A2)>0,MAX(F$1:F1)+1,"")) 販売売上表(2)のF1セルには次の式を入力します。 =MAX('販売売上表(1)'!F:F) F2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(A2="","",IF(COUNT(A$2:A2)>0,MAX(F$1:F1)+1,"")) 販売売上表(3)のF1セルには次の式を入力しましす。 =MAX('販売売上表(2)'!F:F) F2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(A2="","",IF(COUNT(A$2:A2)>0,MAX(F$1:F1)+1,"")) つぎにまとめのシートですがA2セルには次の式を入力してD2セルまでオートフィルドラッグしたのちに、下方にもオートフィルドラッグします。 =IF(ROW(A1)<=MAX('販売売上表(1)'!$F:$F),INDEX('販売売上表(1)'!$A:$D,MATCH(ROW(A1),'販売売上表(1)'!$F:$F,0),COLUMN(A1)),"")&IF(AND(ROW(A1)>MAX('販売売上表(1)'!$F:$F),ROW(A1)<=MAX('販売売上表(2)'!$F:$F)),INDEX('販売売上表(2)'!$A:$D,MATCH(ROW(A1),'販売売上表(2)'!$F:$F,0),COLUMN(A1)),"")&IF(AND(ROW(A1)>MAX('販売売上表(2)'!$F:$F),ROW(A1)<=MAX('販売売上表(3)'!$F:$F)),INDEX('販売売上表(3)'!$A:$D,MATCH(ROW(A1),'販売売上表(3)'!$F:$F,0),COLUMN(A1)),"") これで販売売上表(3)までのデータが追加されても問題なく表示されることになります。さらに売上販売表が増加しても&を追加して式をたてることで対応することができますね。
- cistronezk
- ベストアンサー率38% (120/309)
マクロでやる場合、以下の手順をマクロ記録すればマクロの知識がなくても可能と思います。以下、 ・すべてのシートのフォーマットが同じで、1行目に見出し、2行目以降にデータが入力されている。 ・各データの件数は1000件を超えることはない。 との前提で説明します。 (1)シート「販売売上表(2)」のA2を選択してCtrl+Shift+Endで範囲を指定し、コピー。 (2)シート「販売売上表(1)」のA1000を選択して貼り付け。 #A1000を選択する方法は、名前ボックス(数式バーの左)に「A1000」と入力すれば簡単。 (3)シート「販売売上表(3)」のA2を選択してCtrl+Shift+Endで範囲を指定し、コピー。 (4)シート「販売売上表(1)」のA2000を選択して貼り付け。 (5)シート「販売売上表(4)」のA2を選択してCtrl+Shift+Endで範囲を指定し、コピー。 (6)シート「販売売上表(1)」のA3000を選択して貼り付け。 (7)以下、同様にシート「販売売上表(n)」のデータをコピーしてシート「販売売上表(1)」のn-1行目に貼り付けます。 (8)全部のデータをシート「販売売上表(1)」に貼り付けたら、A列からD列を選択し、商品コードで「並び替え」を実行。 以上です。 これを一度マクロ記録しておけば、手直しすることなく使えるはずです。 実情に合わせて選択するセルを変更してください。
お礼
ありがとうございます。 これならマクロを記録するだけで簡単にできますね^^ 助かりました~
- Hageoyadi
- ベストアンサー率40% (3145/7860)
Excel(エクセル)基本講座:統合の使い方 http://www.eurus.dti.ne.jp/~yoneyama/Excel/tougou.html とか。
お礼
ありがとうございます。 参考にしてみますね♪
お礼
とんでもありません。 ありがとうございました^^