• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:EXCEL 抽出について)

EXCELで必要な情報を抽出する方法

このQ&Aのポイント
  • EXCELで必要な情報を抽出する方法について教えてください。
  • 具体的な操作手順や関数の使用方法などを教えていただけると助かります。
  • また、抽出結果の例も教えていただけるとありがたいです。

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんばんは! VBAでの一例です。 Sheet1のデータをSheet2に表示するとします。 画面左下のSheet1のSheet見出し上で右クリック → コードの表示 → VBE画面に ↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub Sample1() 'この行から Dim i As Long, j As Long, wS As Worksheet Set wS = Worksheets("Sheet2") wS.Cells.ClearContents With wS.Cells(1, 1) .Value = "作品名" .Offset(, 1) = "名前" End With For j = 3 To Cells(1, Columns.Count).End(xlToLeft).Column For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row If Cells(i, j) = 1 Then With wS.Cells(Rows.Count, 1).End(xlUp).Offset(1) .Value = Cells(1, j) .Offset(, 1) = Cells(i, 2) End With End If Next i Next j End Sub 'この行まで ※ 関数でないので、データ変更があるたびにマクロを実行する必要があります。m(_ _)m

yjyongil
質問者

お礼

できました。有難う御座います。

その他の回答 (2)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

配列数式などを使いますとデータが多くなった場合などには計算に負担がかかります。 次のように作業列を作って対応します。 例えばIDから4.YYY本までの項目名がシート1のA2セルからF2セルまでに並んでおり、各データが下方に入力されているとします。 そこでC2セルからF2セルを選択してコピーしH2セルに貼り付けます。K2セルには4.YYY本g表示されますね。 G1セルには0と入力してからH1セルには次の式を入力し右横方向にドラッグコピーします。 =IF(H2="","",G1+COUNT(C3:C1000)) H3セルには次の式を入力して右横方向にドラッグコピーしたのちに下方にもドラッグコピーします。 =IF(C3="","",MAX(G$3:G$1000)+COUNT(H$2:H2)+1) 作業列の作成は終わってお求めの表ですがシート2に表示させるとします。 A2セルには次の式を入力してB2セルまでドラッグコピーしたのちに下方にもドラッグコピーします。 =IF(ROW(A1)>MAX(Sheet1!$G$1:$XX$1),"",IF(COLUMN(A1)=1,INDEX(Sheet1!$G$2:$XX$2,MATCH(ROW(A1)-0.1,Sheet1!$G$1:$XX$1,1)+1),IF(COLUMN(A1)=2,INDEX(Sheet1!$B$3:$B$1000,MATCH(ROW(A1),INDEX(Sheet1!$G$3:$XX$3,MATCH(ROW(A1)-0.1,Sheet1!$G$1:$XX$1,1)+1):INDEX(Sheet1!$G$1000:$XX$1000,MATCH(ROW(A1)-0.1,Sheet1!$G$1:$XX$1,1)+1),0)),"")))

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

シート1のA列にID、B列に名前、1行目はタイトル行、C列以降2行目以下データとして シート2に =IF(ROW(A1)>COUNT(Sheet1!C:F),"",INDEX(Sheet1!$1:$1,MOD(SMALL(IF(Sheet1!$C$2:$F$10=1,ROW(Sheet1!$C$2:$F$10)*100+COLUMN(Sheet1!$C$2:$F$10)),ROW(A1)),100))) と記入し、必ずコントロールキーとシフトキーを押しながらEnterで入力、下向けにコピー =IF(ROW(A1)>COUNT(Sheet1!C:F),"",INDEX(Sheet1!$A:$A,SMALL(IF(Sheet1!$C$2:$F$10=1,ROW(Sheet1!$C$2:$F$10)*100+COLUMN(Sheet1!$C$2:$F$10)),ROW(A1))/100)) と記入し、必ずコントロールキーとシフトキーを押しながらEnterで入力、下向けにコピー 名前はIDからVLOOKUP関数で取ってきます。