- ベストアンサー
エクセルで複数のデータを一つにする方法
- エクセル2010を使って商品の配送管理をするデータを作成している際に、「全セット」というデータを商品項目に一つずつ反映させる方法を知りたいです。
- 外部データの取り込みを使ってアクセスからデータを抽出しているため、セット商品の内訳を表示する方法を教えてください。
- 名前、電話番号、数量、合計は別のシートにあるデータからVLOOKUP関数を使って反映しています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは! No.1さんが仰っているような疑問は残るのですが・・・ とりあえず質問を素直に解釈して VBAになってしまいますが、一例です。 Alt+F11キー → メニュー → 挿入 → 標準モジュール → VBE画面に ↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub Sample1() 'この行から Dim i As Long, k As Long, cnt As Long, c As Range Dim wS1 As Worksheet, wS2 As Worksheet Set wS1 = Worksheets("Sheet1") Set wS2 = Worksheets("Sheet2") Application.ScreenUpdating = False With wS1.Cells(1, 1).CurrentRegion .Value = .Value End With For i = 2 To wS1.Cells(Rows.Count, 1).End(xlUp).Row If wS1.Cells(i, 3) <> "全セット" Then Set c = wS2.Range("A:A").Find(what:=wS1.Cells(i, 3), LookIn:=xlValues, lookat:=xlWhole) If c Is Nothing Then cnt = cnt + 1 wS2.Cells(cnt, 1) = wS1.Cells(i, 3) End If End If Next i For i = wS1.Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1 If wS1.Cells(i, 3) = "全セット" Then wS1.Rows(i + 1 & ":" & i + cnt - 1).Insert For k = 1 To cnt With wS1.Cells(i + k - 1, 1) .Value = wS1.Cells(i, 1) .Offset(, 1) = wS1.Cells(i, 2) .Offset(, 2) = wS2.Cells(k, 1) .Offset(, 3) = wS1.Cells(i, 4) .Offset(, 4) = wS1.Cells(i, 5) End With Next k End If Next i wS2.Columns(1).ClearContents Application.ScreenUpdating = True End Sub 'この行まで ※ Sheet1のデータは実データに変えていますので、関数は消えてしまいます。 ※ Sheet2を作業用のSheetとして使用していますので、Sheet2は何もデータが入っていないという前提です。 ※ 一旦マクロを実行すると元に戻せませんので、別Sheetでマクロを試してみてください。 こんなんではどうでしょうか?m(_ _)m
その他の回答 (1)
- shintaro-2
- ベストアンサー率36% (2266/6245)
>データに「全セット」というものがあり、「全セット」の内訳をエクセルの関数を使って、商品項目に1つづつ反映したいのですが、全く分からなくて苦戦しております。 何故そのように変更する必要があるのでしょう? もともと何か意図があって「全セット」にしていたと思うのですが? 個々のアイテムの集計をするときに、全セットもカウントすれば良いだけだとおもうのですが・・・ 特に 宮本 11111111 イチゴ 1 1000 宮本 11111111 リンゴ 1 1000 宮本 11111111 みかん 1 1000 としてしまうと、合計金額がでたらめなものになってしまいますよ。
お礼
ご回答ありがとうございます。 その通りだと思います。ですが、色々な事情によりエクセルの関数を使ってデータを変更するということになりました。 金額ですが、全セットの金額を付け加えたいので、上記のように表示いたしました。 今回購入者の内訳を知りたいということだったのでこのような一覧にいたしました。
お礼
ご回答ありがとうございます。 希望通りの一覧ができました。 ご教示ありがとうございます。