プロが教えるわが家の防犯対策術!

仕事であるリスト4000行ほどあるデータ(A)の中から別シート(B)へ抽出をしたいのですが、
そのBがカタログのような形になっており、商品名や品番、値段等の項目が商品画像の下に記載するものとなっています。Bは添付資料をご確認ください。
横並びの表になっていて、オートフィルがうまく動作しません。
メーカー名セルのとなりは品番、その下に品名、上代or下代 を自動的に参照させたい部分です。

お知恵をお借りしたいです。。宜しくお願い致します。

「Excelについての質問」の質問画像

質問者からの補足コメント

  • 回答ありがとうございます。
    A10セルには品名が入れたいのですが、VLOOKUPでA9&B9としているのはAsheetのA9&B9でしょうか?
    初歩的なことを聞いてすいません、、

    No.2の回答に寄せられた補足コメントです。 補足日時:2021/10/21 13:30
  • つらい・・・

    何度もすいません、回答いただいた関数で同じようなsheetを試しに作ってみて関数を入れてみても
    上手く作動しませんでした。

    (VLOOKUP(A9&B9,A!$C$2:$G$30,2,0),"エラー")の中についての説明を教えて欲しいです。。
    Excelが本当に苦手で・・申し訳ありません。。

      補足日時:2021/10/21 13:48

A 回答 (5件)

No.4です。

前回回答で添付画像に番号をふり漏らしてしまいました。上部画像が①、下部画像が➁となります。
なお、画像①の見出しであるD1セルが「A」と表示されていますが、「JAN」の誤りです。
また、➁の画像が見にくいので、拡大版を再投稿します。
前回回答のとおり、(ア)(イ)(ウ)(エ)(オ)を一つのブロックとして、項目表示部分にコピーすることになります。
つまり、「A9~B12」をブロックとしてコピーして、「D9~E12」「G9~H12」「J9~K12」「M9~N12」に貼り付けし、さらに、
「A9~N12」をコピーして、A20、A31、A42・・・に貼り付けしていくということになります。
「Excelについての質問」の回答画像5
    • good
    • 0

No.2さんの数式は、「シートBのメーカー名と品番は入力(転記)されている」という前提だと思います。


ご質問者の本質的な問題は、データAの一覧表からシートBに転記することなので、No.2さんの数式を使うためには、まず、「シートBのメーカー名と品番をデータAから転記する」方法を考えないといけません。
No.1さんがお示しになっておられますが、シートBの転記先の行番号、列番号からデータAの何行目のデータかを特定しないといけません。
実際の表がご質問者がお示しになったようなものだとすると、「メーカー名と品番」は「=((ROW()-9)/11)*5+INT(COLUMN()/3)+1」という数式でシートBの転記先の行番号、列番号からデータAの何行目にあるのかを特定できます。
但し、データAにつていの説明がないので、とりあえず、常識的な表として1行目には「見出し」があるものとします。すると1行ずれるので、「=((ROW()-9)/11)*5+INT(COLUMN()/3)+2」という数式で計算することになります。
ところで、No.2さんさんの数式では、「メーカー名と品番を結合して、データAを検索する」という手法をとっていますが、データAにメーカー名と品番を結合したデータを追加しなければなりません。
だとすると、JANコードを用いれば、メーカー、品番、品名等は一意に決定されるのでデータAを加工せずに済みます。そこで、ここでは、JANコードを用いることにします。JANコードの行に合わせて数式を修正すると「=((ROW()-11)/11)*5+INT(COLUMN()/3)+2」となります。
添付画像①➁をご覧ください。
添付画像①のようなデータAがあったとして、これをシートBに転記するものとします。
シートBのA11セルつまり、JANコードの表示位置に、

=INDEX(データA!$D$1:$D$4000,((ROW()-11)/11)*5+INT(COLUMN()/3)+2)・・・・・・(ア)

という数式を記述しています。この数式を記述すると、データAのJANコードが転記されます。JANコードが表示された状態になれば、その上下のセルの内容をJANコードから特定することが可能になります。

シートBのA9セルつまり、メーカー名の表示位置に、

=INDEX(データA!$A$1:$A$4000,MATCH(A11,データA!$D$1:$D$4000,0))・・・・・・(イ)

という数式を記述しています。同様に、
シートBのB9セルつまり、品番の表示位置に、

=INDEX(データA!$B$1:$B$4000,MATCH(A11,データA!$D$1:$D$4000,0))・・・・・・(ウ)

シートBのA10セルつまり、品名の表示位置に、

=INDEX(データA!$C$1:$C$4000,MATCH(A11,データA!$D$1:$D$4000,0))・・・・・・(エ)

シートBのA12セルつまり、上代or下代の表示位置に、

=INDEX(データA!$E$1:$E$4000,MATCH(A11,データA!$D$1:$D$4000,0))・・・・・・(オ)

という数式を記述することで、一つの商品に対する転記が完了します。
あとは、(ア)(イ)(ウ)(エ)(オ)の数式を一つのブロックとしてコピーし、シートBの項目の表示位置にコピーすけばよいということになります。
「Excelについての質問」の回答画像4
    • good
    • 0

回答遅れてすみません。


「A10セルには品名が入れたいのですが、VLOOKUPでA9&B9としているのはAsheetのA9&B9でしょうか?」
そうです。A10セルには、すぐ上のA9&B9(メーカー名&品番)を参照して、商品名を表示します。
シート名「A」に義だ離側のように不応ができていないと正しく参照できません。!記号はシート名を意味します。通常「Sheet1」などになっていますが、質問文から察してデータ(A)とあるので「A」というシートかと思いました。
適宜直してください。
C$2:$G$5000は、左の表が5000行目まであると想定しています(4000行あるということなので。)。
,2,はC列から右へ2個目であるD列の品名を、以下,3,はJANを,4,は上代,5,は下代を表示するものです。
,0)は完全一致を検索する指示子です。
"エラー"は一致するものが見つからない場合に”エラー”と表示するものです。これは、入力ミスや、一覧表のデータの誤りが考えられます。
表のC列はC2=A2&B2にて「メーカー名&品番」を結合しています。
もとの表になければ追加してください。
以上です。
    • good
    • 0

添付図の左はシート名Aとします。

右側のBの各セルについて、
A10=IFERROR(VLOOKUP(A9&B9,A!$C$2:$G$5000,2,0),"エラー")
A11=IFERROR(VLOOKUP(A9&B9,A!$C$2:$G$5000,3,0),"エラー")
A12=IFERROR(VLOOKUP(A9&B9,A!$C$2:$G$5000,4,0),"エラー")
B12=IFERROR(VLOOKUP(A9&B9,A!$C$2:$G$5000,5,0),"エラー")
としました。
このセルの塊を、右や下にコピーすれば、参照できると思われます。
「Excelについての質問」の回答画像2
この回答への補足あり
    • good
    • 0

こんにちは



規則的に並んでいるようなので、対応関係を計算することは可能と思われます。
であれば、関数による参照でもマクロでも可能と思われます。
とは言っても、どのような関係なっているのかがわからないので、具体的には示せませんけれど・・・

例えば、項目のひと固まりを単位に考えるとして、横方向を優先して埋めてゆくとします。
項目の行番号、列番号を0始まりとすれば(0、1、2・・の順)
 「行番号」× 5 +「列番号」
が項目の番号になります。
これを逆算すれば、どの項目をどの位置に表示すべきかが計算できます。
(最終的なセル位置は、これに、「実際に1項目が使っている行数・列数」を乗じたものになりますけれど‥)


>データ(A)の中から別シート(B)へ抽出をしたいのですが、
全体のデータから何らかの条件で抽出したものを転記したいというような場合は、関数で直接行おうとするとかなり面倒なことになると予想されます。
そのような場合には、一旦、別シートにでも抽出処理だけを行うようにして、その中間シートから順に転記するような仕組みにしておいた方が(考え方が)簡単になるでしょう。
一方で、抽出処理も併せてマクロで行うような場合であれば、まとめて処理することが可能だと考えられます。

・・・ご参考にでもなれば。
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!