• ベストアンサー

二つのリストから店舗別リストを作成

お世話になっております。 出来ればマクロで在庫リスト、売上リストから店舗別のリストを作成したいのですが店舗リストに纏めるときに在庫リストで売上リストに同じ品目が無い時に空白が出来てしまい上手く揃えることが出来ません。 ご教授お願い致します。 在庫リスト 売上リスト 品目  鹿児島  福岡           品目  鹿児島  福岡 メロン   1    2              いちご   1    2 みかん   3    1             りんご    1    1 りんご    1    1              なし     1    1  なし     1    1             みかん    3    1 いちご    1    1             パイン    1    2 これらのリストを下記のように作成したいのです。 鹿児島   福岡 品目   売上   在庫           品目   売上   在庫 いちご   1    1             いちご  1    2        なし     1    1             なし    1    1  パイン    1    0             パイン  2    1 みかん    3    3            みかん  1    1 メロン     1    0            メロン   0    2 りんご     1    1             りんご  1    1 自分でマクロを作成してみて品目の順は並び替えを使用すれば問題ないのですが、二つのリストにそれぞれ無い品目があったりなかったりする時に無いほうに追加したりして揃える事がどうしても出来ませんでした。 宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • hige_082
  • ベストアンサー率50% (379/747)
回答No.4

う~ん、とってもマクロにし難い表です 人が見やすい表はデータとしては扱い難いものです 力技でやってはみましたが 品目数が変化する分には関係ありませんが 店舗数が変化すると手に負えないと思いますよ 表の構成をもう少し考えた方が良いと思います Sub test() Dim 在庫リスト Dim 売上リスト Dim i, j With Worksheets("sheet1") 在庫リスト = .Range("a3").Resize(.Range("a1").CurrentRegion.Rows.Count - 2, 3) 売上リスト = .Range("e3").Resize(.Range("e1").CurrentRegion.Rows.Count - 2, 3) End With With Worksheets("sheet2") If Range("a1").Value = "" Then .Range("a1").Value = "鹿児島" .Range("a2:c2").Value = Array("品目", "売上", "在庫") .Range("e1").Value = "福岡" .Range("e2:g2").Value = Array("品目", "売上", "在庫") End If .Range("a3").Resize(UBound(在庫リスト), 1) = 在庫リスト For i = 1 To UBound(売上リスト) For j = 3 To .Cells(Rows.Count, 1).End(xlUp).Row If .Cells(j, 1).Value = 売上リスト(i, 1) Then Exit For Next j If j > .Cells(Rows.Count, 1).End(xlUp).Row Then .Cells(j, 1).Value = 売上リスト(i, 1) Next i .Range("a3", .Cells(Rows.Count, 1).End(xlUp)).Copy .Range("e3") For j = 3 To .Cells(Rows.Count, 1).End(xlUp).Row For i = 1 To UBound(売上リスト) If .Cells(j, 1).Value = 売上リスト(i, 1) Then .Cells(j, 2).Value = 売上リスト(i, 2) .Cells(j, 6).Value = 売上リスト(i, 3) Exit For End If Next i If i > UBound(売上リスト) Then .Cells(j, 2).Value = 0 .Cells(j, 6).Value = 0 End If Next j For j = 3 To .Cells(Rows.Count, 1).End(xlUp).Row For i = 1 To UBound(在庫リスト) If .Cells(j, 1).Value = 在庫リスト(i, 1) Then .Cells(j, 3).Value = 在庫リスト(i, 2) .Cells(j, 7).Value = 在庫リスト(i, 3) Exit For End If Next i If i > UBound(在庫リスト) Then .Cells(j, 3).Value = 0 .Cells(j, 7).Value = 0 End If Next j End With End Sub 参考まで

DEC2010
質問者

お礼

お礼が遅くなり申し訳ありませんでした。 やはり元データに問題があるのですね・・・詳しく詳細を載せたいのですが 立場上全て記載するわけにはいかないので・・・ それでもマクロを作成して頂いてありがとうございます。 元データを何とかするように改善してみます。 本当にお世話をかけました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

回答No.3

通りすがると申します。 在庫リストにコードが存在してないとなると、品目でヒットさせるしかないですね。 あまりよろしいやり方ではないのですが、上表の二つを品目でソートして、品目 をキーとしてマッチングさせる。 若しくは、出力をいったんワークテーブルに格納して品目をキーとして格納していく  ワークテーブルは、こんな感じで作っておきます。       項目(品目、地域、 売上、在庫)   でもって、在庫リストと売上リストを全件読み込み、上記テーブルへ格納していく。 格納する際、地域と品目をキーとして同じものがすでに存在していたら、対象の 項目を更新する。存在しなかったら、追加する。 イメージとしては、こんな感じでできてくると思います。 <在庫リストから>  品目---地域--売上--在庫  メロン--鹿児島--0---1  メロン--福岡---0---2  みかん--鹿児島--0---3  みかん--福岡---0---1  リンゴ--鹿児島--0---1  リンゴ--福岡---0---1  なし---鹿児島--0---1  なし---福岡---0---1  いちご--鹿児島--0---1  いちご--福岡---0---1  ・在庫リストには、売上がないので、売上には0を設定 <上記表+売上リストから>  品目---地域--売上--在庫  メロン--鹿児島--0---1  メロン--福岡---0---2  みかん--鹿児島--3---3  みかん--福岡---1---1  リンゴ--鹿児島--1---1  リンゴ--福岡---1---1  なし---鹿児島--1---1  なし---福岡---1---1  いちご--鹿児島--1---1  いちご--福岡---2---1  パイン--鹿児島--1---0  パイン--福岡---2---0 ・最後のパインは、売上のみ存在なので、在庫には0を設定  <表中の”-”は、桁合わせのための投入です> 全てのレコードを処理し終えたら、<上記表+売上リストから>が出来上がる。 <上記表+売上リストから>を地域+品目でソートすると下表のように なります。  品目---地域--売上--在庫  メロン--鹿児島--0---1  みかん--鹿児島--3---3  リンゴ--鹿児島--1---1  なし---鹿児島--1---1  いちご--鹿児島--1---1  パイン--鹿児島--1---0  メロン--福岡---0---2  みかん--福岡---1---1  リンゴ--福岡---1---1  なし---福岡---1---1  いちご--福岡---2---1  パイン--福岡---2---0 上記イメージから、目的の表が作成できるかと思います。  

DEC2010
質問者

お礼

回答有難うございます。 こういうやり方があったのは思いつきませんでした。 参考になります。マクロで上手く行きませんでしたらこの方法を試したいと思います。

全文を見る
すると、全ての回答が全文表示されます。
  • nattocurry
  • ベストアンサー率31% (587/1853)
回答No.2

作成してみたコードを提示しましょう。

DEC2010
質問者

お礼

申し訳ありません。 標記ミスがありました。 Sub チェック() Dim i As Long For i = 1 To 50 If Cells(i, 1) = "" Then Exit For Select Case Cells(i, 1) Case Is < Cells(i, 5) Cells(i, 5).Insert shift:=xlDown ←修正(i,※6→5) Case Is > Cells(i, 5) Cells(i, 1).Insert shift:=xlDown End Select Next End Sub

DEC2010
質問者

補足

Sub チェック() Dim i As Long For i = 1 To 50 If Cells(i, 1) = "" Then Exit For Select Case Cells(i, 1) Case Is < Cells(i, 5) Cells(i, 6).Insert shift:=xlDown Case Is > Cells(i, 5) Cells(i, 1).Insert shift:=xlDown End Select Next End Sub こんな感じです。 2つのリストがシートに一緒にあるものとしてその間に1列空けています。 品目だけ揃えてくれるのですが値がそのままで動いてくれません。 Cells(i, 1)の1を複数指定するにはどのような指定をしたら良いのかわかりませんでした。

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

はじめまして、通りすがりと申します。 上記件なのですが、上表の品目には、品目コードというものは存在しないのでしょうか? 普通上記のような場合には、品目コード(上表二つとも)でソート(昇順)した表をもとに マッチングして下表を作成するという流れになります。

DEC2010
質問者

補足

品目コードは売上リストには存在しておりますが、 在庫コードには存在していないのです。 その為に条件分岐が私のスキルでは思うように上手く行かなくて 困っています。 回答有難うございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 【EXCEL2000】2つのリストの合計を出すには?

    リストA リンゴ 3 みかん 5 バナナ 2 スイカ 3 リストB りんご 2 メロン 4 バナナ 3 いちご 2 ↑のような2つのリストがあるとして、 リストC りんご 5 みかん 5 バナナ 5 スイカ 3 メロン 4 いちご 2 リストA・Bの合計がリストCのようにするにはどのような関数を使えばいいかお解りになる方教えてください。 判りづらい質問で申し訳ありません。m(_ _)m ※品名と数量は別セルです。

  • 【Excel】プルダウンリストを作成して項目に値を関連付けるには

    初めて投稿させて頂きます。 現在、Excel2003を使用し簡単な経費・収支管理表を 作成しようとしています。 その際に、入力の手間や計算間違いを 避けるためにプルダウンリストを作成し、 そのリストの各項目に数値を関連付け、 自動計算をする際に、セルには文字を表示したまま その関連付けた値を計算して計を出したいのですが、 やり方をご存知な方がおりましたら教えて頂けないでしょうか? やりたい事としては、まず入力規則等で作成した 下記の商品プルダウンリストが有るとします。 ---------------- ■商品リスト [商品名] みかん りんご イチゴ すいか めろん ---------------- その各商品へ価格を関連付け ---------------- ■リスト [商品名] [価格] みかん  100 りんご  150 イチゴ  260 すいか  420 めろん  540 ---------------- エクセルで表示する際に、 以下の様にしたいです。 ---------------- [商品名] [個数] [計] みかん▼  2   \200 りんご▼  1   \150 イチゴ▼  3   \780 すいか▼  1   \420 めろん▼  0   \0 ---------------- よろしくお願い致します。

  • エクセルで複数のシートからデータを抽出したい

    例えば、 シート1  シート2  シート3     新しいシート あんず   めろん   あんず      あんず いちご   なし    もも    →  いちご みかん   りんご            かき りんご   かき             なし                      みかん                      めろん                      もも                      りんご                       という感じで、シート1から3を同じデータはダブらず新しいシートにまとめたいのです。ひとつひとつ見ていくのは大変なので、手っ取り早くできる方法を教えてください。

  • エクセルで複数のシートからデータを抽出したい

    例えば、 シート1  シート2  シート3     新しいシート あんず   めろん   あんず      あんず いちご   なし    もも    →  いちご みかん   りんご            かき りんご   かき             なし                      みかん                      めろん                      もも                      りんご                       という感じで、シート1から3を同じデータはダブらず新しいシートにまとめたいのです。ひとつひとつ見ていくのは大変なので、手っ取り早くできる最も簡単な方法を教えてください。難しいことは分かりません。

  • 教えてアクセス2007!「在庫管理を求める方法」

    教えてアクセス2007!「在庫管理を求める方法」 アクセス2007を扱うのは初心者ですが在庫管理のデーターを作っていて フォームを開いた時に商品の在庫だけが表示される方法を教えて下さい たとえば 入荷              出荷 商品  日付 入荷数      商品   日付  出荷数 りんご 5/1  10     りんご  5/10  10 いちご 5/5  10     ばなな  5/15  10 ばなな 5/10 10     みかん  5/16  10 みかん 5/11 10 メロン 5/13 10 この場合、いちごとメロンが残ってます フォームを開いた時、残ってる商品だけを表示させたいのですが どうしたら良いでしょうか?教えて下さい。  

  • Excelで同一文字列を検出して隣りのセルに返すなどしたい

    Excelのシートの1列に文字列がずらっと並んでいるとします。本来は「いちご、りんご、ばなな、みかん、すいか、めろん」と、ダブリがないはずの項目ばかりが入力されているはずでしたが、しかし実際は「いちご、りんご、ばなな、りんご、みかん、いちご、すいか、めろん」という風に、いくつかの項目にダブリがあるとします。そこで、そのダブリを発見し、何がダブっているのか手早く知る方法があれば教えてください。関数、もしくはマクロをご存知の方、お願いいたします。

  • エクセルVBA(マクロ-コンボボックスについて)

    マクロ初心者です。 教えてください。 コンボボックスで、[▼]をクリックすると、 [りんご]、[いちご]、[みかん]のリストが表示されます。 しかし、もう一度、[▼]をクリックするとリストの数が増えています。 [りんご]、[いちご]、[みかん]、[りんご]、[いちご]、[みかん]、[りんご]、[いちご]、[みかん] 全くの初心者なので、どうすればいいかわかりません。 コンボボックスで、[▼]をクリックすると、 [りんご]、[いちご]、[みかん]のリストのみが常に表示されるようにしたいです。 下記がコードです。 ---------------------------------------- Private Sub 種類_Combo_DropButtonClick() '** データセット 種類_Combo.AddItem "りんご" 種類_Combo.AddItem "いちご" 種類_Combo.AddItem "みかん" End Sub ---------------------------------------- よろしくお願いします。

  • 教えて下さい!

    エクセル2007でマクロを使用しています。 データー表を作り、マクロで作ったボタンを押すとデーター表内の当てはまるデーターが抽出されるという表です。下記参照。 (1)下記の様なデーター表があります。 リンゴ   品名検出←(マクロボタン) みかん   (品名内容) イチゴ メロン リンゴ (2)(品名内容)に品名を入れてマクロボタンを押すと、 リンゴ       品名検出 みかん       (リンゴ) イチゴ メロン リンゴ (3)「リンゴ」が検出される仕組みです。 リンゴ        品名検出 リンゴ        (リンゴ) 上記の表でセルを挿入して(増やして)マクロを押すと、マクロが反応しなくなりました。 挿入するだけではなく、何か別の作業もしないといけないのでしょうか? 分かりづらい質問と思いますが、宜しくお願い致します。

  • EXCELでの複雑なグラフ作成

    以下のような横棒グラフを作成しようと思っているのですが、上手くいきません。 どなたか作成方法をご存知の方は教えて頂けないでしょうか? 【例】 店舗A、店舗B、店舗Cと言うスーパーがあります。 それぞれの店では商品の種類は野菜、果物、雑貨を扱っています。 品目は野菜はキュウリ、トマト、ナスの三種類。 果物はみかん、りんご、いちご、ももの四種類。 雑貨は定規、ハサミの二種類。 店舗ごと、商品の種類ごとで、品目は積上げ式でグラフを作成したいのですが、可能でしょうか? (言葉だと説明しづらいので、イメージ図を添付しました) 宜しくお願い致します。

  • COUNT IF???

    エクセル初心者です。 A列とB列にある項目で違うモノをはじき出したいのですが。 A列     B列    りんご   りんご    みかん   りんご りんご   みかん メロン    メロン みかん みかん いちご メロン A列にもB列にもないのが『いちご』という具合に答えを出したいのですが、何か良い方法を教えてください。 よろしくお願い致します。

そば屋の不思議
このQ&Aのポイント
  • 信州のそば屋での不思議な出来事
  • 注文した普通のざるそばが多すぎる
  • 女性客には小サイズを勧めるのに自分には言われなかった
回答を見る