• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:excelクロス抽出を一覧表示)

Excelクロス抽出一覧表示方法とは?

このQ&Aのポイント
  • Excelのデータシートから別シートにクロス抽出した一覧を作成する方法を解説します。
  • 具体的なデータ例を挙げながら、言語名とレベルで抽出して地域、登録番号、氏名の一覧を作成する手順を説明します。
  • また、同一シートに行をずらして抽出先を設定し、複数の別シートから同一条件で抽出して結果を表示する方法も紹介します。

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

  • ベストアンサー
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.1

関数で対応したい場合は、以下のような数式をA11セルに入力し右方向及び下方向にオートフィルしてください(添付画像参照)。 =INDEX(A:A,SMALL(INDEX((INDEX($A$2:$J$5,,MATCH($E$10,$A$1:$J$1,0))<>$E$11)*10000+ROW($A$2:$J$5),),ROW(A1)))&"" ただし、表示データ数が多い場合は、再計算に時間がかかるのでお勧めできません。 一般操作で対応するなら、オートフィルタでデータを絞り込み、この絞り込んだデータをコピー貼り付けすれば、ご希望のデータの編集ができます。 マクロで対応したい場合は、この操作を(操作上のノウハウが少し必要ですが)、「マクロの記録」でコードを記録することで対応することができます。 マクロで対応する場合は、どの部分がわからないのか提示してください。

arama448
質問者

お礼

お返事が遅くなって申し訳ございません。 ご回答ありがとうございます。 試してみます。 またご報告いたします。

arama448
質問者

補足

ありがとうございました。 indexを重ねてmatchを入れ込めばいいんですね。 思いつきませんでした。 何度も何度もくり返すので、 関数またはマクロで設定してしまいたかったのです。 簡単にできました。 本当に助かりました。 大変勉強になりました。

その他の回答 (1)

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

こんばんは! VBAでの一例です。 >同一シートに行を15行くらいずつずらして抽出先をあらかじめ設定しておき・・・ とありますが、仮にすべてのSheetで15名以上の場合にも対応できるように 余計なお世話かもしれませんが↓の画像で上側がSheet1にしてみました。 画像のように列方向に表を作っておくと何名でも対応できると思います。 画像の下側がSheet2以降のセル配置だとします。 Alt+F11キー → 画面左下の「This Workbook」をダブルクリック → VBE画面に ↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) ※ Sheet1のSheet名はどんな名前でもかまいませんが、Sheet見出しの一番左側に配置しておきます。 Sub test() 'この行から Dim i, j, k, L As Long Dim ws1 As Worksheet Set ws1 = Worksheets(1) Application.ScreenUpdating = False i = ws1.UsedRange.Rows.Count If i > 4 Then ws1.Rows(5 & ":" & i).ClearContents End If For j = 1 To ws1.Cells(2, Columns.Count).End(xlToLeft).Column Step 3 For k = 2 To Worksheets.Count For i = 2 To Worksheets(k).Cells(Rows.Count, 1).End(xlUp).Row L = WorksheetFunction.Match(ws1.Cells(2, j), Worksheets(k).Rows(1), False) If Worksheets(k).Cells(i, L) = ws1.Cells(2, j + 1) Then With ws1.Cells(Rows.Count, j).End(xlUp).Offset(1) .Value = Worksheets(k).Cells(i, 1) With .Offset(, 1) .Value = Worksheets(k).Cells(i, 2) .NumberFormatLocal = "00" End With .Offset(, 2) = Worksheets(k).Cells(i, 3) End With End If Next i Next k Next j Application.ScreenUpdating = True End Sub 'この行まで ※ Sheet1のセル配置は画像通りでないとちゃんと表示してくれません。 参考になりますかね?m(_ _)m

arama448
質問者

お礼

お返事が遅くなって申し訳ございません。 ご回答ありがとうございます。 試してみます。 またご報告いたします。

arama448
質問者

補足

実は、横ではなく、縦にずらしたかったのです。 このマクロは別データで使わせていただきます。 とても勉強になりました。 どうもありがとうございました。