エクセルのシートAに商品番号(実際は1000個近くあります)と
その売り上げ個数がずらっと並んでいます。
各顧客ごとの売り上げ結果なので、商品番号がかなり重複しています。
これをシートBに各商品ごとに売り上げ個数が表示されるような
関数式が知りたいです。
ちなみにシートAとシートBの商品の並び順は違います。
今までは商品ごとに合計を出してから、別シートで該当商品を探し、
手入力で入れていたので、この作業に3時間くらいかかっていました。
入力ミスの可能性もあるので、さらに確認作業も大変でした。
【シートA】
A B
---------
001 3
001 2
001 2
002 1
002 1
003 1
003 2
003 5
003 3
【シートB】
A B
---------
001 7
002 2
003 11
いろいろ調べて試してみましたが苦戦しています。
まずはシートAの「C1」に関数「=SUMIF($A$1:$A$2000,A1,$B$1:$B$2000)」を入力し、
各商品ごとの合計数を出し、それをC欄の下(C2000)までとドラッグ?してみたのですが、
そうすると下のように、同じ商品内で数値が重複して出るので、
今度は余計な数値(セル)を削除しないといけないと思い、
そこからつまづいてしまいました。
【シートA】
A B C
---------------
001 3 7
001 2 7
001 2 7
002 1 2
002 1 2
003 1 11
003 2 11
003 5 11
003 3 11
長文ですみません。
方法をご存知の方、ぜひ教えてください。
よろしくお願いします!
A 回答 (6件)
- 最新から表示
- 回答順に表示
No.6
- 回答日時:
2007以上の場合
(1)シートAのA列をシートBのA列へコピーする
(2)シートBのA列を列選択した状態でデータ→重複削除→OKを選択
(3)シートBのB1セルに『=SUMIF(シートA!A:A,A1,シートA!B:B)』を入力
(4)シートBのA列最終行までB1セルの数式をオートフィル
2003未満の場合
上記(2)ではなく、以下を参考にしていただき、
http://allabout.co.jp/gm/gc/376556/2/
シートAのA列「A:A」をリスト範囲とし、C列にでも書き出し
(1行目に項目名を指定していない場合はC1セルを削除)
シートBのA列へシートAのC列をコピーしてください。
No.5
- 回答日時:
こんばんは!
すでに色々回答が出ていますので、参考程度で・・・
VBAでの一例です。
Sheet1のデータをSheet2に表示するとします。
Alt+F11キー → メニュー → 挿入 → 標準モジュール → VBE画面のカーソルが点滅しているところに
↓のコードをコピー&ペースト → Excel画面に戻りマクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)
Sub Sample1() 'この行から
Dim i As Long, lastRow As Long, wS As Worksheet
Set wS = Worksheets("Sheet2") '←「Sheet2」は実際のSheet名に!
wS.Cells.ClearContents
wS.Range("B1") = "数量"
With Worksheets("Sheet1") '←「Sheet1」も実際のSheet名に!
.Range("A:A").AdvancedFilter Action:=xlFilterCopy, copytorange:=wS.Range("A1"), unique:=True
lastRow = wS.Cells(Rows.Count, "A").End(xlUp).Row
With Range(wS.Cells(2, "B"), wS.Cells(lastRow, "B"))
.Formula = "=SUMIF(Sheet1!A:A,A2,Sheet1!B:B)"
End With
End With
End Sub 'この行まで
※ コード内に説明を入れていますが、各Sheet名は実際のSheet名にしてください。
※ 関数でないのでSheet1のデータ変更があるたびにマクロを実行する必要があります。m(_ _)m
No.4
- 回答日時:
別シートに商品番号が入力されているなら、単純にそのシートでSUMIF関数で集計するだけだと思うのですが、どうしてC列に数式を入力しているのでしょうか?
もし、現在の数式で最初の商品番号のデータだけ集計数を表示したいなら、C2セル(本当は項目名があるのではないでしょうか)に以下の式を入力しオートフィルします。
=IF(COUNTIF($A$2:A2,A2)>1,"",SUMIF($A$2:$A$2000,A1,$B$2:$B$2000))
このようにしておけば、オートフィルタでC列の「空白」のチェックを外して数値だけを表示して、別シートにコピー貼り付けするのが簡単です。
このような手順を踏まずに、別シートに商品番号だけのリストを作成しておき、このセルを参照するSUMIF関数を使うのが簡単だと思います。
もしSheet1のデータにある商品番号から、別シートに重複のない商品データリストを作成したい場合は、商品名の列をコピーし、この列でデータタブの「詳細設定」で「重複するデータは無視する」にチェックを入れれば必要なデータを表示させることができます。
ちなみに、表示する商品データ数が少なければ複雑な関数を使用すれば自動的に表示できますが、データ数が多い場合はシートの動きが重くなるのでお勧めできません。
#Officeソフトはバージョンによって使用できる機能や操作方法が大きく異なりますので、質問の際には必ずバージョンを明記するようにしましょう。
No.3
- 回答日時:
VBAの一例です。
シートBを選択すると計算するようになっています。
シートBのシート名の上で右クリック後、コードの表示を選択して
出てきた画面の白い部分に下記をコピーして貼り付けて下さい。
Private Sub Worksheet_Activate()
Cells.ClearContents
Sheets("A").Columns("A:A").Copy Destination:=Columns("A:A")
myRow = Cells(Rows.Count, "A").End(xlUp).Row
Range("A1:A" & myRow).Sort Key1:=Range("A1"), order1:=xlAscending
For i = myRow To 2 Step -1
If Range("A" & i) = Range("A" & i - 1) Then
Range("A" & i).EntireRow.Delete
End If
Next i
Range("B1").FormulaR1C1 = "=SUMIF(A!C[-1],RC[-1],A!C)"
Range("B1").Copy Destination:=Range("B2:B" & Cells(Rows.Count, "A").End(xlUp).Row)
End Sub
データが膨大になると時間がかかるようになってしまいますが
2000くらいなら問題ないかと思います。
No.2
- 回答日時:
No1の方の言われるように、ピボットテーブル使うほうが楽ですけど。
。。あくまでコピー&ペースト使うのであれば
「データ」「並び替えとフィルタ」「詳細設定」で、
リスト範囲をA列のみ指定して、「重複するレコードは無視する」にチェックしてください。
【シートA】
A B C
---------------
001 3 7
002 1 2
003 1 11
と間の重複する行が非表示になります。
これをコピー&ペーストして、B列を消せばできます。
※非表示の解除は「データ」「並び替えとフィルタ」「クリア」でできます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
つい集めてしまうものはなんですか?
人間誰もは1つ「やたらこればかり集めてしまう」というものがあるもの。 あなたにとって、つい集めてしまうものはなんですか?
-
これ何て呼びますか
あなたのお住いの地域で、これ、何て呼びますか?
-
CDの保有枚数を教えてください
ひとむかし前はCDを買ったり借りたりが主流でしたが、サブスクで簡単に音楽が聴ける今、CDを手に取ることも減ってきたかと思います。皆さんは2024年現在、何枚くらいCDをお持ちですか?
-
ちょっと先の未来クイズ第4問
11月ごろに発表される、2024年の「新語・流行語大賞」にノミネートされる言葉を書けるだけ書いてください。
-
高校三年生の合唱祭で何を歌いましたか?
大人になると大人数で合唱する機会ってないですよね。 思い出すと、高校三年生の合唱祭が最後でした。 そこで、みんなの思い出の合唱曲を知りたい!
-
VBAで重複データを合算したい
Excel(エクセル)
-
VBAで重複する項目を1つにまとめて金額を合計したい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
文字の色も参照 VLOOKUP
-
エクセル マクロ 標準モジュー...
-
ExcelのVlookup関数の制限について
-
エクセルの保護で、列の表示や...
-
Excelのセルの色を変えた行(す...
-
VBAで繰り返しコピーしながら下...
-
エクセルの列の限界は255列以上...
-
【条件付き書式】countifsで複...
-
Excelでの並べ替えを全シートま...
-
エクセルで横並びの複数データ...
-
エクセルで、チェックボックス...
-
Excel VBA ピボットテーブルに...
-
スプレッドシートでindexとIMPO...
-
excel 複数のシートの同じ場所...
-
Excel の複数シートの列幅を同...
-
納品日から得意先ごとの請求日...
-
エクセルVBA 行追加時に自...
-
エクセルでマクロか関数を使っ...
-
エクセル 日報売上を月報に展開...
-
EXCEL2010 VBAで空白行以外を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelのVlookup関数の制限について
-
文字の色も参照 VLOOKUP
-
エクセルの保護で、列の表示や...
-
Excel の複数シートの列幅を同...
-
Excelでの並べ替えを全シートま...
-
エクセル マクロ 標準モジュー...
-
VBAで繰り返しコピーしながら下...
-
エクセルの列の限界は255列以上...
-
【条件付き書式】countifsで複...
-
Excel VBA ピボットテーブルに...
-
エクセルで、チェックボックス...
-
SUMPRODUCTにて別シートのデー...
-
スプレッドシートでindexとIMPO...
-
VLOOKアップ関数の結果の...
-
【VBA】ピボットテーブルを既存...
-
【VBA】複数のシートの指定した...
-
Excelのセルの色を変えた行(す...
-
Excelに自動で行の増減をしたい...
-
エクセルで横並びの複数データ...
-
エクセルVBA 行追加時に自...
おすすめ情報