
エクセルの複数データの抽出で困っています。
助けてください。
以下の様なシートで別シートから複数のデータを取り出したいのですが・・・・
他の方の質問を参照したのですがうまく行かなく
皆さんの知識を教えてください。
シート1 テーブル
A列 B列 C列 D列
グループ メーカ 部品 数量
1 A社 AAA 1
1 B社 BBB 2
1 C社 CCC 4
2 F社 ZZZ 3
2 S社 HHH 2
3 以下も同様
3
4
5
5
5
シート2 摘出を考えているのですが
シート1のA列グループを選択すると全て摘出する様にしたいです。
シート2
グループ選択 「1」 「2」 を選択すると
1と2が全て摘出される
1 A社 AAA 1
1 B社 BBB 2
1 C社 CCC 4
2 F社 ZZZ 3
2 S社 HHH 2
選択は1と3 2と4 1と5 とか結構なパターンがあります。
VLOOKUP、その他の方の回答例も使用してみましたがうまく出来ませんでした。
関数、マクロ問いませんので
どうぞ、お力をお貸し願います。
No.6
- 回答日時:
今仮に、グループ選択で指定するグループ名をSheet2のB1、C1、D1セルに入力すると、抽出結果をSheet2の4行目以下に表示させるものとします。
まず、Sheet2のA4セルに次の数式を入力して下さい。
=IF(ROWS($4:4)>COUNTIF(Sheet1!$A:$A,$B$1)+COUNTIF(Sheet1!$A:$A,$C$1)+COUNTIF(Sheet1!$A:$A,$D$1),"",INDEX(Sheet1!A:A,SUMPRODUCT(ROW($A$1:INDEX($A:$A,MATCH("゛",Sheet1!$C:$C,-1)))*COUNTIF($B$1:$D$1,Sheet1!$A$1:INDEX(Sheet1!$A:$A,MATCH("゛",Sheet1!$C:$C,-1)))*(COUNTIF(OFFSET(Sheet1!$A$1,,,ROW($A$1:INDEX($A:$A,MATCH("゛",Sheet1!$C:$C,-1)))-ROW($A$1)+1),$B$1)+COUNTIF(OFFSET(Sheet1!$A$1,,,ROW($A$1:INDEX($A:$A,MATCH("゛",Sheet1!$C:$C,-1)))-ROW($A$1)+1),$C$1)+COUNTIF(OFFSET(Sheet1!$A$1,,,ROW($A$1:INDEX($A:$A,MATCH("゛",Sheet1!$C:$C,-1)))-ROW($A$1)+1),$D$1)=ROWS($4:4)))))
次に、Sheet2のA4セルをコピーして、Sheet2のB4~D4の範囲に貼り付けて下さい。
次に、Sheet2のA4~D4の範囲をコピーして、同じ列の5行目以下に貼り付けて下さい。
後は、グループ選択で指定するグループ名をSheet2のB1、C1、D1セルに入力しておくだけで、全自動で抽出結果が表示されます。(「Ctrl+Shift+Enter」操作や作業列は不要です)
尚、この数式では、Sheet1に入力されている元データの表の、何行目にまでデータが入力されているのかを、D列の数量欄に、数値データが存在している最下段の行が、何行目であるのかを判定する事で、計算処理を行っているため、正確に動作させるためには、データが入力されている最下段の行の数量欄には、必ず数値が入力されていなければなりません。(どうしても最下段の数量欄に数値データを入力出来ない場合には、データが入力されている最下段の行よりも下にある行中の数量欄に、0等の適当な数値を入力してから、抽出を行って下さい)
No.5
- 回答日時:
補助列を使わずに関数で対応するなら以下のような配列数式を使うことになります。
抽出条件を入力するセルがA2:A5セルに設定されている場合(最大4条件まで選択できる場合)、以下のような数式をD2セルに入力して、Ctrl+Shift+Enterで確定して下方向に適当数オートフィルコピーします(添付画像参照)。
=INDEX(Sheet1!A:A,SMALL(IF(ISNUMBER(FIND(TRANSPOSE($A$2:$A$5),Sheet1!$A$1:$A$1000))*(TRANSPOSE($A$2:$A$5)<>""),ROW($A$1:$A$1000)*1,1000),ROW(A1)))&""
E2セルには以下の式を入力してCtrl+Shift+Enterで確定し、右方向に3つ、下方向に適当数オートフィルします。
=IF($D2="","",INDEX(Sheet1!B:B,SMALL(IF(ISNUMBER(FIND(TRANSPOSE($A$2:$A$5),Sheet1!$A$1:$A$1000))*(TRANSPOSE($A$2:$A$5)<>""),ROW($A$1:$A$1000)*1,1000),ROW(B1))))

No.4
- 回答日時:
フィルターオプションの機能を紹介しておきます。
データが入っているシートが Sheet1 として
別のシートに
A B C D
1 グループ
2 1
3 2
4
5 グループ メーカ 部品 数量
6
と検索した値を A1~A3セルに入れておきます
表示を出したい部分にその項目名を入れておきます。
エクセル2010 の場合で
データ=>フィルター 明細設定で
指定した範囲 にチェック
リスト範囲 Sheet1!A:D
検索条件範囲 A1:A3
抽出範囲 A5:D5 でOKすると グループが 1 と 2が抽出されます。
これをマクロの記録で実行してできたコードを活用した事例ですが
抽出して表示するシート名を右クリック
コードの表示でVBエディターを起動して
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row < 4 Then
Sheets("Sheet1").Columns("A:D").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("A1:A3"), CopyToRange:=Range("A5:D5"), Unique:=False
End If
End Sub
を貼り付けして閉じると
A2とA3セルに抽出を希望する グループの番号を入れるたびに表示が変わってくれます。
No.3
- 回答日時:
シート1はもとの表でA1セルからD1セルには項目名が入力され2行目から下方にお示しのデータが並んでいるとします。
作業列をE列に設け、E2セルには次の式を入力して下方にオートフィルドラッグします。
=IF(A2="","",A2+COUNTIF(A$2:A2,A2)/1000)
シート2には抽出したデータを表示させることにしてA1セルにはグループ名を例えば1と入力し、B1セルにはグループ名を例えば2と入力します。
2行目にはシート1と同じ項目名を入力します。
A3セルには次の式を入力してD3セルまでオートフィルドラッグしたのちに下方にもオートフィルドラッグします。
=IF(ROW(A1)<=COUNTIF(Sheet1!$A:$A,$A$1),INDEX(Sheet1!$A:$D,MATCH($A$1+ROW(A1)/1000,Sheet1!$E:$E,0),COLUMN(A1)),IF(ROW(A1)<=COUNTIF(Sheet1!$A:$A,$A$1)+COUNTIF(Sheet1!$A:$A,$B$1),INDEX(Sheet1!$A:$D,MATCH($B$1+(ROW(A1)-COUNTIF(Sheet1!$A:$A,$A$1))/1000,Sheet1!$E:$E,0),COLUMN(A1)),""))
このような方法ではシート1の表では必ずしもグループごとにデータが並んでいなくても対応することができます。
No.2
- 回答日時:
こんばんは!
一例です。
↓の画像のようにSheet1のデータをSheet2に表示するようにしてみました。
Sheet1に作業用の列と検索データを入力するセルを設けています。
(作業列・検索セルはどこでも構いません)
作業列E2セルに
=IF(COUNTIF($G$2:$G$5,A2),ROW(),"")
という数式を入れオートフィルでずぃ~~~!っと下へコピーしておきます。
そしてSheet2のA2セルに
=IF(COUNT(Sheet1!$E:$E)<ROW(A1),"",INDEX(Sheet1!A:A,SMALL(Sheet1!$E:$E,ROW(A1))))
という数式を入れ列方向と行方向にオートフィルでコピーすると
画像のような感じになります。
尚、VBAでやる場合は作業用の列は必要ありませんが、検索データをINPUTBOXに入力するようにする、
もしくは画像のように検索データを入力するセルを設ける必要があると思います。
検索データのパターンが二つとか決まっているのであればINPUTBOX等でも良いと思いますが
検索データの数を好みによって変えたいという場合は前述のような関数が簡単かもしれませんね。
以上、参考になれば良いのですが・・・m(_ _)m

No.1
- 回答日時:
>シート1のA列グループを選択すると全て摘出する様にしたいです。
ここの意味が飲み込めません、
プリントスクリーン ボタンを押して、ペイントで、貼り付けをするとExcel画面がすべて張り付きます。
左上の点線マークで範囲を指定して切り取り、
新たにペイントに貼り付けて、名前をつけて保存すると、
OK の画像添付をクリックで、保存されたExcel画像を投稿できるようになります。
お試しいただけるとうれしいですね。

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 複数シートの複数列に入力されているデータを重複なしで抽出するVBAを作りたいです。 9 2022/06/17 10:33
- Visual Basic(VBA) 複数ファイルのデータの統合について 12 2022/05/14 12:03
- Visual Basic(VBA) マクロVBA 1シートをまとめる 閉じ方 初心者 SOS! 1 2022/06/17 14:54
- Excel(エクセル) VLOOKUP が機能しない、その原因は何 ? 8 2022/10/19 12:06
- その他(パソコン・スマホ・電化製品) エクセル初心者です。 仕事でエクセルを使っていて、普段は素人でもできる簡単な関数を使ったことがある程 1 2022/05/25 11:17
- Excel(エクセル) Excelマクロ 差分抽出の方法が知りたいです。 2 2023/03/07 13:25
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Excel(エクセル) エクセルの大きなシートでグラフを見つける 4 2022/07/28 10:07
- Excel(エクセル) Excelの関数でこんな処理ができますか 1 2023/02/08 13:46
- Excel(エクセル) エクセルでファイル保存時に複数シートのオートフィルタを全て解除したい 1 2023/05/10 13:23
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Microsoft Officeを2台目のPCに...
-
大学のレポート A4で1枚レポー...
-
エクセルで特定のセルの値を別...
-
Office2021を別のPCにインスト...
-
outlookのメールが固まってしま...
-
エクセルVBAで1004エラーになり...
-
別シートの年間行事表をカレン...
-
MSオフィス2013にMS365が上書き...
-
Excelで〇のついたものを抽出し...
-
office2019 のoutlookは2025年1...
-
Excelで空白以外の値がある列の...
-
エクセル:一定間隔で平均値を...
-
Microsoft Formsの「個人情報や...
-
Excelの関数(FILTER関数)につ...
-
エクセル ○○以上○○以下の関数を...
-
エクセルマクロ(超初心者)
-
【Excel VBA】PDFを作成して,...
-
WindowsのPCで単純な勤怠管理を...
-
エクセルで英文字に入れた下線...
-
英数字のみ全角から半角に変換
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Microsoft Officeを2台目のPCに...
-
Office2021を別のPCにインスト...
-
大学のレポート A4で1枚レポー...
-
Microsoft365について
-
outlookのメールが固まってしま...
-
英数字のみ全角から半角に変換
-
Office 2021 Professional Plus...
-
エクセルVBAで1004エラーになり...
-
エクセルで特定のセルの値を別...
-
MSオフィス2013にMS365が上書き...
-
Microsoft Formsの「個人情報や...
-
【Excel VBA】PDFを作成して,...
-
別シートの年間行事表をカレン...
-
office2019 のoutlookは2025年1...
-
マクロ自動コピペ 貼り付ける場...
-
表の作成について
-
office365 回復できない。
-
マイクロソフト 一時使用コード...
-
Teams内でショートカットって貼...
-
Microsoft Office Homeインスト...
おすすめ情報