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

エクセルでデータベース検索する方法

このQ&Aのポイント
  • エクセルでデータベースを検索して別シートに抽出する方法について教えてください。
  • シート1にあるデータから特定の条件でデータを抽出し、シート2に表示する方法を知りたいです。
  • また、抽出したデータを削除するにはどうすればいいですか?

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

  • ベストアンサー
  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.2

Sheet1に提示の模擬データがあるとしてSheet2のA1へ"ぶどう"と入力されているとします。 模擬データの最大行を21としたとき下記の数式で良いと思います。 Sheet2のA2セルの数式 =IF(COUNTIF(Sheet1!$A$2:$A$21,$A$1)>=ROW(A1),INDEX(Sheet1!$A$1:$C$21,SUMPRODUCT(LARGE((Sheet1!$A$2:$A$21=$A$1)*ROW($A$2:$A$21),COUNTIF(Sheet1!$A$2:$A$21,$A$1)-ROW(A1)+1)),COLUMN(A1)),"") A2の数式をC2までコピーし、A2からC2セルを下へ必要数コピーすれば良いでしょう。 Sheet2のA1が空欄の場合は全て空欄になるはずですがSheet1の元データの範囲は下方に空欄を含めた範囲にしてください。 また、元データの行数に合わせて数式の対象セル範囲を変更してください。 Sheet1およびSheet2のB列は数値の表示形式をユーザー定義で #,##0"円" としてあります。 貼付画像はExcel 2013で検証したものです。 Excel 2003でも同じ結果が得られると思います。

yoshimitsu525
質問者

お礼

回答ありがとうございます。こういうやり方もあるんですね参考になりました。

その他の回答 (2)

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

例示のデータのように、各列のデータがすべて文字列データなら、A2セル(どのセルでも同じ数式です)に以下の式を入力して右方向に3つ下方向に適当数オートフィルコピーしてください。 =INDEX(Sheet1!A:A,SMALL(INDEX((Sheet1!$A$2:$A$100<>$A$1)*1000+ROW($2:$100),),ROW(1:1)))&"" 数値や日付データがある場合は、B列以下のデータは(B列のデータを表示する数式)以下のように修正してください(この数式のほうが計算負荷が少ないのでお勧めです)。 =IF(A2="","",INDEX(Sheet1!B:B,SMALL(INDEX((Sheet1!$A$2:$A$100<>$A$1)*1000+ROW($2:$100),),ROW(1:1))))

yoshimitsu525
質問者

お礼

回答ありがとうございます。このやりかたもいいですね。さっそく試してみます。

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.1

フィルターオプション(AdvancedFilter) そのものですね。 http://www.eurus.dti.ne.jp/yoneyama/Excel/filter3.htm 参考にしてみてください。

yoshimitsu525
質問者

補足

回答ありがとうございます。このやり方ですと、検索欄をクリアした時に抽出欄もクリアするという点が弱いように感じます。なにかいい方法ありますでしょうか。

関連するQ&A

専門家に質問してみよう