• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:データの抽出)

データの抽出方法とは?

このQ&Aのポイント
  • 毎月変わるデータを簡単に抽出する方法を教えてください。
  • Sheet1のデータからSheet2にリストされている顧客のデータを抽出し、Sheet3に反映させる方法はありますか?
  • 初心者でも理解できるデータ抽出の手順を教えてください。

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

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

割と基本的な関数だけで工夫すると。 添付図のように,シート1(一番左)のA列に一列追加して A2: =IF(COUNTIF(Sheet2!A:A,B2),COUNT($A$1:A1)+1,"") として以下コピー BCD列のデータを随時入れ替えます。 シート2(中)はこれまで通りA列にAAやACを並べます。 シート3(一番右)のA列に一列追加して A2: =IF(ROW(A1)>MAX(Sheet1!A:A),"",ROW(A1)) として以下コピー B2: =IF(A2="","",VLOOKUP(A2,Sheet1!$A:$E,COLUMN())) として,右にCD列にもコピー,下にもコピーして入れておきます。

emi1954
質問者

補足

ありがとうございます。 一つ質問です。 Sheet3のAAとACの数と年は、Sheet1から持ってくると 1AA 5 2008 2AA 6 2007 3AC 9 2007 4AC102009 というようになると思うのですが、上記の表ではすべて同じ数が入っています。下記のどの部分をどう変えればいいのでしょうか。 宜しくお願いします。 B2: =IF(A2="","",VLOOKUP(A2,Sheet1!$A:$E,COLUMN()))

その他の回答 (5)

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

ありゃりゃ,ちょいと書き間違いました。 シート3のB2は B2: =IF($A2="","",VLOOKUP($A2,Sheet1!$A:$E,COLUMN())) を右にコピー,下にコピーですね。 失礼しました。

emi1954
質問者

お礼

ありがとうございました。 おかげさまで簡単にSheet3に表を作ることができました。 完璧です。 本当にありがとうございました。

noname#217196
noname#217196
回答No.5

#2の回答に補足すると、ExcelにもデータベースメニューからSQLがサブメニューで選べるバージョンならクエリによるデータ抽出は可能です。 ただしAccessのクエリウィザードほどは使いやすくないので、オンラインヘルプやMicrosoftサイトのオンラインExcel講座などで使い方を学習してから取り組むほうが失敗は少ないと思います。

emi1954
質問者

お礼

ありがとうございます。

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.3

「初心者なのでむずかしい事ははわかりません。」 ということだが、それでは何もできないですね。 以下をやればできるはずだが、何をやっているかは自分で勉強して、わからないことがあれば、また質問する。 式をばらして作業領域を使えば、理解しやすくなる。 Sheet3のA2に下記関数を入れて、これは配列数式なので、数式バーにカーソルを置いて、Ctrl+Shift+Enterを押します。 すると、下記のように、数式の両端が{ }で囲まれます。 {=IF(COUNT(IF(ISERROR(MATCH(Sheet1!$A$2:$A$20,Sheet2!$A$2:$A$10,0)),"",ROW(Sheet1!$A$2:$A$20)-1))>=ROW()-1,INDEX(Sheet1!$A$2:$C$20,SMALL(IF(ISERROR(MATCH(Sheet1!$A$2:$A$20,Sheet2!$A$2:$A$10,0)),"",ROW(Sheet1!$A$2:$A$20)-1),ROW()-1),COLUMN()-0),"")} ここで、 Sheet1!$A$2:$A$20 は、Sheet1の顧客リストの1列目です。 Sheet1!$A$2:$C$20 は、Sheet1の顧客リストの範囲です。範囲はデータがなくても適当に決めてください。 Sheet2!$A$2:$A$10は、Sheet2のリストです。範囲はデータがなくても適当に決めてください。 ROW(Sheet1!$A$2:$A$20)-1 は、Sheet1の顧客リストの位置を決めています。リストが2行目から始まっているので、行番号-1で、2行目のデータが1番目ということです。リストが3行目から始まるのなら、-2します。 ROW()-1 INDEXの行位置です。Sheet3のリストの位置を指定しています。例の場合、リストの出力が2行目からなので、行番号-1で1番目のデータです。リストを4行目から始めるなら、-3します。 COLUMN()-0 INDEXの列位置です。Sheet3のリストの位置を指定しています。例の場合、リストの出力が1列目(列A)からなので、列番号-0で1番目のデータです。この場合は0はいらないのですが、説明の都合でつけています。リストを4列目(列D)から始めるなら、-3します これらは、実際の表に合わせて設定してください。 A2から、下方向、右方向に必要分フィルドラッグすれば、目的のデータが得られるはずです。

emi1954
質問者

お礼

とてもご丁寧にありがとうございました。 ひとつひとつ説明してありとても勉強になります。

noname#217196
noname#217196
回答No.2

リレーショナル・データベースで処理するほうが簡単です。 MS AccessはMS Excelとの連携もよく、初心者むけ技術情報が日本語で入手しやすいです。 ExcelのワークシートへAccessからリンクテーブルを張って、sheet1テーブルからsheet2テーブルの顧客名が一致するデータレコードを抽出するクエリを作成し、クエリ結果をExcelのワークシートへ出力できます。 クエリ作成はクエリウィザードを使うと簡単です。 ワークシートに表題とかデータベーステーブルとして邪魔なものがなく、第一行に項目名が入力ずみで第二行からデータが埋まっていれば、五分もあれば初心者でもクエリ結果出力までできると思います。

emi1954
質問者

お礼

ありがとうございます。 残念ながらAccessのプログラムはもっていないので、何とかExcelで出来る方法をさがしていました。

  • koko_u_u
  • ベストアンサー率18% (216/1139)
回答No.1

> 初心者なのでむずかしい事ははわかりません。 毎月、顧客の列を AA と AC でフィルタリングして、sheet3 にコピペする労力と、 Excel のマクロなりを学習する労力を天秤にかけて、お好きな方を選択して下さい。

emi1954
質問者

お礼

ありがとうございます。 これから勉強していこうと思っています。

関連するQ&A