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

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

excelクロス抽出を一覧表示

office2007、XPです。 エクセルでデータシートから別シートにクロス抽出した一覧を作成したいです。 データシートには以下のようなデータがあるとします。実際のデータはもっと多いのですが 地域 登録番号 氏名 日本語 英語 北京語 広東語 韓国朝鮮語 スペイン語 ポルトガル語・・・・ 横浜  01 Aさん 母語 流暢 日常 できない できない できない できない・・・・ 川崎  02   Bさん 流暢 少し 母語 できない できない できない できない・・・・ 東京  03 Cさん 日常 少し できない できない 母語 少し できない・・・・ 相模原 04 Dさん 流暢 できない できない できない できない できない 母語・・・・ ここから言語名とレベルで抽出して、地域、登録番号、氏名だけの一覧を作成したいのです。 たとえば“日本語””流暢”で抽出して 地域 登録番号 氏名 川崎  02   Bさん 相模原 04 Dさん さらに、同一シートに行を15行くらいずつずらして抽出先をあらかじめ設定しておき 3つの別シートから同一条件で抽出して同一シートに表示させたいです。 マクロでもかまいません。 関数やマクロでいろいろためしたのですが、 どうしてもうまくいきません。 お知恵を拝借させてください。

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

  • ベストアンサー
  • 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
質問者

補足

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

関連するQ&A

  • エクセルのひと月の一覧表から誰が、いつ、どれだけの量を使用したか抽出したい

    エクセルのひと月の一覧表から誰が、いつ、どれだけの量を使用したか抽出したい 月集計表(シート名) 氏名|番号| 1 | 2 | 3 | 4 | 5 | 6 | 7 | A氏| 1 | | | | |500| | | B氏| 2 | |150|213| | | | | C氏| 3 | | | | | | | | D氏| 4 | | | | |534| | | 今の上のような月の一覧に使用した量を入力しています。 番号の列の数字はその左のセルにある各顧客の管理番号、一番上の行にあるのが月の日付です。 これが6月の各顧客の一覧だとして 使用回数(シート名) 氏名|番号|_1回目_|_2回目_|_3回目_|→4,5,6回目と続く A___|1___|6/4|500|___|___|___|___| B___|2___|6/2|150|6/3|213|6/7|100| C___|3___|___|___|___|___|___|___| D___|4___|6/5|534|___|___|___|___| 管理番号の並びは変えずにこのような一覧を別シートに作りたいのです。 月の一覧に入力したら自動的にこちらにも入力されるような方法はあるでしょうか?あったら方法もお願いします。

  • エクセルの抽出に関するマクロ

    (1)OSはVistaです。 (2)エクセル2007を使用しています。 (3)シートは「会員情報」「抽出条件」「抽出結果」の3枚です。 (4)「会員情報」シートのA5からR588までデータ(氏名、住所、電話番号など)が入っています。A5からR5は、タイトル行(フィールド)です。R列は「フォームコントロール」で挿入したチェックボックスです。。 (5)「抽出条件」シートには、会員の種類による抽出ができるような条件(正会員、準会員、協賛会員など)が設定してあります。 (6)「抽出結果」シートには、抽出された結果がコピーされます。 「会員情報」シートのデータを、「抽出条件」シートで指定した条件で抽出し、「抽出結果」シートにコピーするマクロは成功しました。 チェックボックスにチェックを入れた会員を抽出し、その方たちの郵便用ラベルを作成するのが最終目標ですが、今は「会員情報」シートのチェックボックスを使った抽出とその結果のコピーができないところでストップしています。チェックボックスを使った抽出とその結果のコピーのマクロを教えてください。

  • Excelにおけるデーター抽出

    Excelのシートに記載されている内容は次の通りです。 (1) セルA5~A60の間に1~56の昇順の番号 (2) セルB5~B60には氏名 (3) セルC5~C60には○、×、△の記号 このシートからC列が ○ の記号が付与されている者だけの氏名を別のシートのB7~B**の間に抽出するのですが、抽出したシートの行に空白ができないようにするには式をExcel関数で作成することは可能でしょうか? 若し、不可能でしたらマクロで行う場合のプログラムを教えて下さい。

  • エクセルで抽出した不特定数のデータを行数の決まった別シートに取り込む方法を教えてください

    エクセルでマクロを作り始めた初心者です。 Sheet1に、氏名、住所、TEL、会社名、担当者、金額・・・と続くデータが6000レコードほどあります。(レコードは随時増えていきます) Sheet2では、担当者名を条件にSheet1から必要な列(上記に記載したもの5つ)のみを抽出するマクロでデータを取り出すようになっています。 抽出したデータをsheet3のフォーマットに氏名、住所、金額の列だけ入れるのですが、入れられる行が20行と決まっており、最後の行には、合計欄が入るようになっています。 不特定数のレコードを20行ごとにページを区切って印刷するにはどうしたらよいでしょうか。ご教示お願いします。

  • EXCELの表からの「抽出」、「転記」

    1.元帳(Sheet8)から転記した「金融機関向け提出資料」(Sheet10)があったので、こ れからまた転記して組単位で「No.」と「氏名」の表(Sheet5)を作りたいので  す。 2. 添付画像「金融機関向け提出資料」(Sheet10)において、9組を例にとると、No.7、No.16、No.17、No.23の、以下続  く。これ等をSheet5の表に抽出していきたいのです。Sheet5の構想は、1行目:組 番号、2行目は項目名:No.(A2)と氏名(B2)、3行目~27行目(25名分)に各  データを 抽出、転記する。一組分の範囲はA1:B27です。 3.組の数は9組ありますが、一組だけその方法を教えて頂ければ結構です。 4.尚、Sheet10のNo.は1~188です。Sheet10のG列に、組番号を転記しています。こ の組番号はSheet10では印刷領域外です。 5. Sheet10からSheet 5に抽出し、転記した最初の人の(1)No.と(2)氏名をオートフィ ルで下にコピーすると、同じ組のNo.と氏名が表示されたら良いのですが・・・。 6.私はマクロが使えません。INDEX関数やMATCH関数は使ったことがあります。 元帳(Sheet8)からINDEX関数で「金融機関向け提出資料」(Sheet10)に転記して います。 7.最初から9組分の表を作成しておいて、そこにデータを順次転記していく方法もあ るのかも知れません。 8.Sheet10の一部を「画像添付」します。 以上ですが、よろしくご指導ください。

  • エクセルでデータ抽出するには?

    まったくのエクセル初心者です。 エクセルで、シート1のデータの特定科目を抽出してシート2にコピーしたいのです。 シート1のデータは 5/1 消耗品    2500 5/3 水道光熱費  8000 5/5 消耗品     700 5/7 消耗品    1200 この中から消耗品と記入されている行をシート2に抽出したいのです。 マクロは全然わかりません。。簡単にできる方法は無いでしょうか?よろしくお願いします。

  • エクセルで、データのある行だけを抽出したい。

    エクセルのSheet1にデータが入っており、セルが空白でない行のデータのみを、Sheet2に抽出したいと思っています。 Sheet2にあらかじめ関数を入れておく方法にしたいため、関数について教えてください。 タイムテーブルで予定を管理するような表で、A~Hまでにデータが入っています。 予定を入れる際にはE列には必ず入力をするため、E列が空白でない行のみを抽出したいです。 A|B|C|D|E|F|G|H 月|日|時間|… 11|22|10:00|… 11|22|10:30|… 時間枠は10:00~17:00の30分刻みで、1日15行使用するので、1年で5475行まで使用します。 1行目はタイトル行なので、データは2行目から入力しています。 フィルタオプションで抽出する方法や、それをマクロで登録しておく方法は分かったのですが、あとから予定を追加することがあるため、マクロを実行する度にデータが置き換わると困ってしまいます。 また、抽出したSheet2のI列以降には備考などを入力したいため、やはり後から列がずれると困るため、A~H列に関数を入れておく方法で実行したいと思います。 よろしくお願いいたします。

  • エクセル 検索したデータを1行抽出するには

    よろしくお願いします。 シート1には 氏名       生年月日   コード    コード   コード    交付番号 安心太郎    S20.12.20    1      2      3     1234567890 安全花子    S40.11.11    1                   2345678901 道路一郎    S30.10.25    2      3            3456789012 橋川理恵    S25.12.17    3                   4567890123 天気良太    S50.11.28    1      3            5678901234 という具合に、社員一覧表があるとします。 そして、シート2には コード番号     名前   1       普通自動車免許   2       原動機付自転車免許   3       大型自動車免許 というようにコード一覧表があるとします。 ここからなのですが、 シート3には「1.普通自動車免許取得者一覧」 シート4には「2.原動機付自転車免許取得者一覧」 シート5には「3.大型自動車免許取得者一覧」 というように、シート1にデータ入力をしたら、 自動的に、コード別に検索して、該当するコードに引っかかる者は、それぞれのコード別シート(シート3~5)に、該当者のデータ1行分(氏名・生年月日・コード・交付番号等)が丸々コピー(転記)されるにはどうしたらよろしいのでしょうか。 関数等を調べましたが、該当するものが見あたらず、 やはり、マクロで行う方法なのかと思ったのですが、 マクロが超初心者のため、やり方や命令文(?)などが全くわからず、困っております。 よろしくおねがいいたします。

  • エクセル一覧から抽出するには

    よろしくおねがいします 添付ファイルあります 会社の売上データが、部署・営業員・得意先CD・売上日・・・・と売上一覧になり一つのファイルとしてあります。 その中から決まった得意先CDだけの売上を抽出したいのですが。 売上一覧は30000行 得意先CDは500件あります いつも決まって抽出したい得意先CDは約200件 得意先CDは5桁でバラバラです 別エクセルに、抽出したい得意先CD一覧を作っておくことは可能です。 アドバイスよろしくお願いいたします。

  • エクセル 別シートから一覧を抽出したい

    部品一覧表を作成しているのですが、2シートあり 1入力シート・2部品コードシートとあります。 部品コードシートにはB列に部品番号・C列部品名・D列部品番号・E列部品名と2行ずつ使い番号・品名がB~Wまで47行分入力されています。 B1:C47、D1:E47…と2列47行にはそれぞれ【A】、【B】、…とセルの名前の定義をつけました。現在【H】までありますが、今後増える可能性があります。 入力シートに、セルの名前を指定したときに部品コードのシートから 一覧を抽出したいのですが、どの関数を使えばよいのかわかりません。 入力シート                 |部品コードシート G   H                  | A Bコード C部品名  Dコード E部品名 4式入力用にあけています。     |1 1800  ユニットA   1501 電源A 5コード 部品名             |2 1801  ユニットB   1502 電源B 6                       |3 G4に関数を入れてG6~G52まで部品コードのシートA1~A47を一気に表示 させたいのです。部品コードシートの行数が変わることはありません。 マクロを使わないと、関数では難しいでしょうか?

専門家に質問してみよう