エクセルの複数データの抽出で困っています。
助けてください。
以下の様なシートで別シートから複数のデータを取り出したいのですが・・・・
他の方の質問を参照したのですがうまく行かなく
皆さんの知識を教えてください。
シート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.1
- 回答日時:
>シート1のA列グループを選択すると全て摘出する様にしたいです。
ここの意味が飲み込めません、
プリントスクリーン ボタンを押して、ペイントで、貼り付けをするとExcel画面がすべて張り付きます。
左上の点線マークで範囲を指定して切り取り、
新たにペイントに貼り付けて、名前をつけて保存すると、
OK の画像添付をクリックで、保存されたExcel画像を投稿できるようになります。
お試しいただけるとうれしいですね。
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.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.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.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.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等の適当な数値を入力してから、抽出を行って下さい)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Microsoft365で提供しているアプリ
-
会社PCのメールが更新されない
-
outlookのメールが固まってしま...
-
teams設定教えて下さい。 ①ビデ...
-
Windows 11で、IME言語バー(IM...
-
Microsoft Officeを2台目のPCに...
-
英数字のみ全角から半角に変換
-
Outlook で宛先が複数の場合の人数
-
【Excel VBA】PDFを作成して,...
-
Microsoft Formsの「個人情報や...
-
マクロ1があります。 A1のセル...
-
Officeを開くたびの「再起動メ...
-
Office 2021 Professional Plus...
-
会社のTeamsのことで相談です。...
-
【Excel】セル内の文字が正しい...
-
Excel テーブル内の空白行の削除
-
WindowsのPCで単純な勤怠管理を...
-
エクセルでレーダーチャートの...
-
【マクロ】違うブックのCallス...
-
Excel 日付を比較したら、同じ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
英数字のみ全角から半角に変換
-
outlookのメールが固まってしま...
-
会社PCのメールが更新されない
-
マイクロソフト 一時使用コード...
-
大学のレポート A4で1枚レポー...
-
Officeを開くたびの「再起動メ...
-
Microsoft Formsの「個人情報や...
-
one drive使えるpcを買う
-
マクロ自動コピペ 貼り付ける場...
-
PDFのハイパーリンクを自動的に変更し...
-
あらかじめ用意したテンプレー...
-
別シートの年間行事表をカレン...
-
【Excel VBA】PDFを作成して,...
-
エクセルでXLOOKUP関数...
-
office365って抵抗感ないですか?
-
ステータスバーの合計に表示さ...
-
【スプレドシート】IF関数の複...
-
Teamsで課題を提出します。 画...
-
Outlook で宛先が複数の場合の人数
-
Microsoft Officeを2台目のPCに...
おすすめ情報