No.4ベストアンサー
- 回答日時:
集計のキーを品名ではなく「品名+単価」で行うようにしました。
連想配列を使います。キーは、厳密には、品名+タブ+単価です。
Sheet1へ出力時には、キーを品名と単価にわけて取り出すようにします。
標準モジュールへ以下のマクロを登録してください。
---------------------------------------------------------------------
Option Explicit
Public Sub 品名単価集計()
Const delm As String = vbTab
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim maxrow As Long
Dim row As Long
Dim dicT As Object '連想配列 キー:品名+タブ+単価 値:個数
Dim key As Variant
Dim elm() As String
Dim tanka As Variant
Set sh1 = Worksheets("Sheet1")
Set sh2 = Worksheets("Sheet2")
Set dicT = CreateObject("Scripting.Dictionary") '連想配列
maxrow = sh2.Cells(Rows.Count, "BG").End(xlUp).row 'Sheet2のBG列の最大行取得
'2行~最終行まで繰り返す
For row = 2 To maxrow
key = sh2.Cells(row, "BG").Value & delm & sh2.Cells(row, "CX").Value
'品名+単価で個数を管理する
If dicT.exists(key) = True Then
dicT(key) = dicT(key) + 1
Else
dicT(key) = 1
End If
Next
sh1.Rows("2:" & Rows.Count).ClearContents 'Sheet1の2行目以降をクリア
row = 2
For Each key In dicT
elm = Split(key, delm)
sh1.Cells(row, "A").Value = elm(0) '品名
sh1.Cells(row, "B").Value = elm(1) '単価
sh1.Cells(row, "C").Value = dicT(key) '数量
sh1.Cells(row, "D").Value = dicT(key) * sh1.Cells(row, "B").Value '金額
row = row + 1
Next
sh1.Range("A1").Sort key1:=sh1.Range("A1"), key2:=sh1.Range("B1"), Header:=xlYes
MsgBox ("完了")
End Sub
tatsu99様
無事に動きました。
ありがとうございました。
前回、教えていただきました
Dictionaryを使うと予想して
(複数条件での重複チェックを質問した者です)
「品名+単価」で作成していましたが
分離の仕方が分からなくてずっと悩んでいました。
根本的に、このような場合のシートをまたいだ
出力の仕方もよく分からなかったため
実際にコードを見て勉強になりました。
また壁にぶち当たった時はよろしくお願いします。
No.3
- 回答日時:
こんにちは
なさりたいことがいまいちわかりませんが、エクセルは表計算ソフトなので、簡単な集計程度であれば関数式などを設定しておく方が、結果が即時に反映できて便利なことが多いと思います。
なんとなくの雰囲気では、元データのシートから条件に合う項目数を集計したいように感じましたので・・・
例えば、集計用シートに以下の様な表を作成して、
50 100 150
りんご
みかん
もも
ぶどう
表内の各セルに関数式をオートフィルすれば、それぞれの個数を一気に集計することが可能です。(ご質問を理解していないので、違っているかも知れませんが・・)
具体的には、COUNTIFS関数やSUMPRODUCT関数を利用することで、複数条件に合った項目数を集計することができます。
(セル位置や値の内容(質)がわからないので、実際の関数式は示せません。)
もちろんマクロでも処理は可能と思いますが、No1様もおっしゃっているように、情報が不足しているのと「何故」かが不明ですね。
というのも、「何故」の部分に使い方の上での条件とか、処理方法上の制約などが隠されている場合も多いのです。
それ以外では「何故」は特に大きな影響にはなりませんが、例えば、マクロの練習を兼ねて作成したいのであれば、まずはご自身で作成してみることです。
作成してみれば(完成できなくとも)、作成するのに最低でもどのような情報が必要で、どのような情報は無くても良いのかが整理できるはずです。
(多くの質問で、質問者様の思う情報しかなく、実際には情報不足のものが多いのも事実です)
これによって、同じ質問をするにしても、説明の内容や手順も変わってくるはずと思いますし、ご自身がわからないところもはっきりしてくるので、より具体的な質問ができるようになり、的確な回答を得られる可能性も増加することと思います。
No.2
- 回答日時:
> ここに、単価別という条件を加えると
> 分からなくなってしまうため、
それなら今のコードを提示して下さい。その方が早いです。
ついでに添削もしてもらえるでしょう。
> 知りたいことは「りんご」のうち
> 「50」は何個、「100」は何個、
> 「150」は何個かということでした。
繰り返しになりますがピボットテーブルでやらない理由はなん
ですか? 「品名」「単価」別の「データの個数」ですよね。
No.1
- 回答日時:
> sheet2に集計するマクロを教えて下さい。
初心者だと自分で書いているのですから まずは自分でやってみて下さい。
最初から人に作ってもらうようなのは 初心者でも何でもないでしょう。
さっぱり分からない人にマクロは無理です。まずは勉強して下さい。
そもそも 何故マクロが必要なのですか?
ピボットテーブルではできないことなのですか?
いずれにしてもこの説明でマクロを組むことはできません。何故なら肝心
なことが説明されていないからです。何を「集計」するのですか?
入力表にはどんな風に入力されているのでしょう。単価が変動する商品な
のかどうかすら分かりません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) SUMIFSと日付変換 10 2023/04/16 15:38
- Excel(エクセル) グループの最後の行に書式、計算式なども同じ行を追加するマクロを教えてもらえませんか。 7 2022/05/18 10:13
- Excel(エクセル) Excel 関数 vlookupなどの使い方について質問です。 シート1に品番、商品名、単価、発注条 6 2022/06/15 19:16
- Excel(エクセル) エクセルの条件付き書式 個人シートを参照して集計シートに色付けしたい 1 2023/06/22 00:39
- Excel(エクセル) VBA セルの値と同じ名前のシートにデータを貼り付けするやり方を教えてください 2 2022/05/17 16:26
- Visual Basic(VBA) 改行ごとに行を追加し、数量を分割 4 2023/07/11 16:39
- Visual Basic(VBA) 【VBA】複数行あるカンマ区切りのデータを全て縦に一列に並べたい 5 2022/04/13 17:03
- Excel(エクセル) 列を自動で追加したい 3 2022/07/11 12:58
- Excel(エクセル) 【条件付き書式】countifsで複数条件を満たしたセルを赤くする方法 2 2023/02/09 23:53
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
2024年 職人不足で単価が上がる...
-
●何故? ラーメン店は 開業•閉...
-
食材の単価と価格の違いを教え...
-
会社で昇級試験があり、提言書...
-
はじめまして。私、配管業を個...
-
外付けHDDって、この先も長く、...
-
エクセル 価格表から単価を呼び...
-
個人事業主5年目の今後
-
天井開口費の見積について
-
一式という言葉の使い方
-
内装屋やクロス職人の会社は儲...
-
受注率
-
外構見積もりましたが、どうで...
-
単価シートから単価をエクセル...
-
製造業に勤めています。 外注さ...
-
土木工事の道路工事の警備員に...
-
構造解析(CAE)業務の相場
-
投資信託の評価損益表の見方
-
建築現場の、土工、雑工、多能...
-
鉄筋工事について分かる方教え...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
はじめまして。私、配管業を個...
-
一式という言葉の使い方
-
CIF単価→FOB単価の算出の仕方を...
-
製造業に勤めています。 外注さ...
-
天井開口費の見積について
-
エクセル 価格表から単価を呼び...
-
会社で昇級試験があり、提言書...
-
外構見積もりましたが、どうで...
-
2024年 職人不足で単価が上がる...
-
公共建築工事(設備)の積算に...
-
事務所ビルの電気料金について...
-
仕入単価
-
1工数1人工
-
単価の前についている「@」
-
積算 高所作業車 建築
-
●何故? ラーメン店は 開業•閉...
-
外付けHDDって、この先も長く、...
-
接客販売店員の一日の平均売り上げ
-
売上、客数、単価から買い上げ...
-
リストボックスの項目に、他の...
おすすめ情報
d-q-t-p様
マクロで、品名ごとの個数を数えて
合計金額を集計する方法は理解しています。
ここに、単価別という条件を加えると
分からなくなってしまうため、
質問いたしました。
品名は、例えば「りんご」や「みかん」で
単価は「50」「100」「150」など
複数ありますが、無限ではありません。
知りたいことは「りんご」のうち
「50」は何個、「100」は何個、
「150」は何個かということでした。
ご回答ありがとうございました。
fujillin様
こんにちは。
ご回答ありがとうございます。
やりたいことは、納品明細書の作成です。
りんご 50
みかん 50
りんご 150
りんご 100
のように順不同で並んでいるデータを
下記のように表示(集計)したい、です。
りんご 50円 3個 150円
りんご 100円 5個 500円
りんご 150円 2個 300円
みかん. 50円 7個 350円
合計 1300円
既に関数で集計するようにしてありますが、
イレギュラーな単価が発生することがあるため
見落とす可能性があること、
データは週ごとに完全にリセットされること、
そのため個数がゼロで項目だけが残ると
分かりづらいこと、
他にも何種類か、マクロで明細を
出力できるようにしたため
一緒に納品明細書も作成できると良いなと思って
ご相談いたしました。