毎月の店舗ごとの商品別の売り上げが、図(元データ)のような形式で提出されます。
(縦軸が商品、横軸が店舗名と数量・金額・在庫数)
集計のため、横軸の項目(店舗名・数量・金額・在庫数)を、縦軸に並び替えるため、手動で行っているのですが、80店舗あるため、VBAで並び替える方法がありましたらご教示いただけますと幸いです。
縦軸の商品は月によって増えたり、減ったりします。
横軸の店舗数も月によって増えたり、減ったりします。
数量・金額・在庫数 は毎月固定です。
説明が拙く恐縮ですが、何卒よろしくお願いいたします。
No.3ベストアンサー
- 回答日時:
標準モジュールに登録してください。
並替の1行目はあなたが作成してください。
マクロは2行目から設定します。
Option Explicit
Public Sub 並び替え()
Dim maxrow1 As Long
Dim maxcol1 As Long
Dim maxrow2 As Long
Dim row1 As Long
Dim row2 As Long
Dim col1 As Long
Dim shouhin_count As Long '商品数
Dim tenpo_count As Long '店舗数
Dim sx As Long
Dim tx As Long
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Set sh1 = Worksheets("元データ")
Set sh2 = Worksheets("並替")
maxrow1 = sh1.Cells(Rows.Count, 1).End(xlUp).Row '1列目最終行
maxcol1 = sh1.Cells(2, Columns.Count).End(xlToLeft).Column '2行目最終列
maxrow2 = sh1.Cells(Rows.Count, 1).End(xlUp).Row '1列目最終行
shouhin_count = maxrow1 - 2
If shouhin_count < 1 Then Exit Sub
If (maxcol1 - 1) Mod 3 <> 0 Then Exit Sub
tenpo_count = (maxcol1 - 1) \ 3
If tenpo_count < 1 Then Exit Sub
sh2.Rows("2:" & Rows.Count).ClearContents '並替の2行目以降をクリア
row2 = 2
'店舗数分の繰り返し
For tx = 1 To tenpo_count
'商品数分の繰り返し
For sx = 1 To shouhin_count
row1 = sx + 2
sh2.Cells(row2, "A").Value = sh1.Cells(row1, "A") '商品名
col1 = (tx - 1) * 3 + 2
sh2.Cells(row2, "B").Value = sh1.Cells(1, col1) '店舗名
sh2.Cells(row2, "C").Value = sh1.Cells(row1, col1) '売り上げ数
sh2.Cells(row2, "D").Value = sh1.Cells(row1, col1 + 1) '売り上げ金額
sh2.Cells(row2, "E").Value = sh1.Cells(row1, col1 + 2) '在庫数
row2 = row2 + 1
Next
Next
MsgBox ("完了")
End Sub
色々とご説明が足りず、申し訳ありませんでした。
早速試してみたところ、無事できました。
大変助かりました。
本当にありがとうございました。
No.2
- 回答日時:
各セルの正確な位置が判らないと、マクロを作成できません。
元データの商品名と書かれているセルはA1でしょうか。
並び替え先の商品名と書かれているセルはA1でしょうか。
元データのシート名はなんでしょうか。
並び替え先のシート名はなんでしょうか。
又、図を添付する場合は、添付図の赤線で囲った部分も提示してください。
そうするとセルの正確な位置がわかります。
No.1
- 回答日時:
こんにちは
VBAのご質問のようですが、関数でもできるのでご参考までに。
ご提示の図がはっきりと見えないのと、セル位置が不明なので考え方だけになりますけれど・・・
添付図で1~6行目までが元のデータ(行数は可変です)とし、11行目以降に縦並びに表示するものと仮定します。
また、9行目のB列、E列で商品数と店舗数を指定するものと仮定します。
添付図では、
A12セルに
=IF(ROW(A1)>$B$9*$E$9,"",INDEX(A:A,MOD(ROW(A1)-1,$B$9)+3))
B12セルに
=IF(ROW(A1)>$B$9*$E$9,"",INDEX($1:$1,INT((ROW(A1)-1)/$B$9)*3+2))
C12セルに
=IF(ROW(A1)>$B$9*$E$9,"",INDEX($B:$IV, MOD(ROW(A1)-1,$B$9)+3, INT((ROW(A1)-1)/$B$9)*3+COLUMN(A1)))
の式を入れて、E12セルまでフィルコピー
さらに、A12:E12を選択して、下方に必要な分だけフィルコピーしています。
(9行目の商品数、店舗数を変更すれば、それに応じた表示に変わります)
>集計のため、横軸の項目(店舗名・数量・金額・在庫数)を、縦軸に並び替えるため、手動で行っているのですが、~
そもそもの話になりますが、元の表の形式を見直した方が宜しいようにも感じますが…?
早々のご回答ありがとうございます。
色々とご説明が足りず、申し訳ありません。
元のデータは、社外から取得しているものになり、こちらの希望レイアウトでいただけないか打診しましたが、できないとの回答で今回ご相談を上げさせていただきました。
関数でもできるのですね。大変勉強になります。
早速試してみたいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 棚卸表の前月比の関数等あれば教えてください 2 2023/05/02 18:34
- その他(Microsoft Office) パワークエリの複数ファイルのデータ統合について 3 2022/07/14 17:06
- Excel(エクセル) Excelのマクロを教えていただけないでしょうか? 1 2023/07/06 19:56
- Visual Basic(VBA) 【ExcelVBA】Powerクエリーでいうピボット解除と同じ処理をVBAで 4 2022/07/06 17:09
- スーパー・コンビニ 一斉値上 スーパーの食料品 値上や単価の仕組みは? 4 2022/06/01 16:18
- その他(お金・保険・資産運用) 至急!【Wolt】各メニューの価格設定の簡単な計算方法 3 2023/03/05 11:58
- Excel(エクセル) エクセルでのVBA 2 2022/08/03 06:48
- その他(ビジネス・キャリア) エクセルで一覧表を作るときのレイアウト、月日と項目の配置について相談です。 2 2023/04/11 09:37
- au(KDDI) auStyleの来店予約をする時に、iPhone14の商品予約もしました。昨日予約したのですが、連絡 1 2022/12/19 20:45
- その他(買い物・ショッピング) お詫びの電話をガチャンと切る 2 2023/01/11 18:42
このQ&Aを見た人はこんなQ&Aも見ています
-
カンパ〜イ!←最初の1杯目、なに頼む?
飲み会で最初に頼む1杯、自由に頼むとしたら何を頼みますか? 最初はビールという縛りは無しにして、好きなものを飲むとしたら何を飲みたいですか。
-
人生最悪の忘れ物
今までの人生での「最悪の忘れ物」を教えてください。 私の「最悪の忘れ物」は「財布」です。
-
忘れられない激○○料理
これまでに食べたもののなかで、もっとも「激○○」だった料理を教えて下さい。 激辛、でも激甘でも。 激ウマ、でも激マズでも。
-
おすすめのモーニング・朝食メニューを教えて!
コメダ珈琲店のモーニング ロイヤルホストのモーニング 牛丼チェーン店の朝食などなど、おいしいモーニング・朝食メニューがたくさんありますよね。
-
うちのカレーにはこれが入ってる!って食材ありますか?
カレーって同じルーから作っても、家庭によって入っているものや味が微妙に違っていて面白いですよね! 「我が家のカレーにはこれが入ってるよ!」 という食材や調味料はありますか?
-
VBA横に並んでいるデータを縦に並ぶデータにしたいです。
Visual Basic(VBA)
-
エクセルで横データを縦に並べ変えたいです。
財務・会計・経理
-
VBA横のデータを縦にする方法
Excel(エクセル)
-
-
4
VBA横データを縦にしたいです
Visual Basic(VBA)
-
5
エクセルで横並びの複数データを縦の一本のデータにしたい
Excel(エクセル)
-
6
エクセルで横並びの複数データを縦のデータにしたい こんにちは。宜しくお願い致します。 A B C D
ソフトウェア
-
7
VBAで横データを縦データに変換する方法を教えて下さい。
その他(Microsoft Office)
-
8
エクセルで1列に500行並んだデータを5列毎に改行
Excel(エクセル)
-
9
エクセルで縦に並んだデータをある項目毎に横に並び替えたい
Excel(エクセル)
-
10
マクロ:横並びデータを縦並びに変更
Excel(エクセル)
-
11
エクセル 横並びの複数行データを縦1列にしたい
Excel(エクセル)
-
12
VBA 縦のデータを横にするコード
IT・エンジニアリング
-
13
エクセルVBA 別シートの複数のセルの値をコピーする方法
Excel(エクセル)
-
14
Excel マクロ VBA プロシージャが大きすぎます のエラー対処方法
Visual Basic(VBA)
-
15
コピーしたデータを2行ずつに貼り付け
その他(Microsoft Office)
-
16
指定した文字があった場合、その行を削除するマクロが欲しいです
Excel(エクセル)
-
17
vba 2つの条件が一致したらコピーして別シートに値のみ貼り付け
Visual Basic(VBA)
-
18
エクセル VBA 時系列に横一列に並んだデータを 縦に整頓するマクロを教えてください。
Visual Basic(VBA)
-
19
【EXCEL】【VBA】空欄は飛ばして処理する方法を教えて下さい。
Excel(エクセル)
-
20
VBA 空白行に転記する
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Microsoft365 管理画面にサイン...
-
英数字のみ全角から半角に変換
-
Microsoft Officeを2台目のPCに...
-
outlookのメールが固まってしま...
-
【Excel VBA】PDFを作成して,...
-
Microsoft Formsの「個人情報や...
-
会社PCのメールが更新されない
-
エクセルでXLOOKUP関数...
-
マクロ自動コピペ 貼り付ける場...
-
teams設定教えて下さい。 ①ビデ...
-
Microsoft入力サインインできま...
-
Excel 条件付き書式 複数行で異...
-
Excel 日付を比較したら、同じ...
-
エクセルのシフト表を簡単にGoo...
-
Excel テーブル内の空白行の削除
-
Excelで空白以外の値がある列の...
-
Office2021を別のPCにインスト...
-
スプレッドシートにて、特定の...
-
Microsoft 365のディフェンダー...
-
エクセルの貼り付け「リンクさ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
英数字のみ全角から半角に変換
-
Microsoft Officeを2台目のPCに...
-
会社PCのメールが更新されない
-
エクセル マクロVBAについて教...
-
【Excel VBA】PDFを作成して,...
-
outlookのメールが固まってしま...
-
エクセルにて横に月の行があり...
-
エクセルで自動的にQRを表示さ...
-
大学のレポート A4で1枚レポー...
-
Microsoft Formsの「個人情報や...
-
エクセルやパワポファイルの保...
-
エクセルでXLOOKUP関数...
-
マクロ自動コピペ 貼り付ける場...
-
Excelファイルで毎月各支店から...
-
エクセル:一定間隔で平均値を...
-
outlookに追加したアカウントの...
-
office365のファイルで「Office...
-
Microsoftを使用している方
-
teams設定教えて下さい。 ①ビデ...
-
Outlook で宛先が複数の場合の人数
おすすめ情報
ご説明不足で申し訳ありません。補足いたします。
元データの「商品名」と書かれているセルの位置はA1セルになり、シート名は「元データ」です。
並び替え先のシート名は「並替」で、こちらも「商品名」と書かれているセルの位置はA1セルになります。
元データは社外から取得しているものになり、こちらの希望レイアウトでいただけないか打診しましたが、できないとの回答で今回ご相談を上げさせていただきました。
どうぞよろしくお願いいたします。