• ベストアンサー

検索値から、その行の抽出。

検索値から、その行の抽出。 シート1のデータがあります。 シート2のA1に検索値を置き、“あああ”の行をシート2に抽出。 シート2のA列に任意の番号を振った後、その番号順での表示(ピンク部分)を希望。 自分でいろいろと調べて試行錯誤したのですが、 思うようにいかず、ご質問させていただきます。 ご回答よろしくおねがいします。

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

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

No.1です! 再びおじゃまします。 前回は先走った方法で希望とはかけ離れていたみたいでごめんなさい。 もう一度画像をアップします。下側がSheet2でSheet2のA列に関しては番号を手入力するわけですよね? その数値の小さい順に表示したい!ということだと思います。 またまた、余計なお世話になるかも知れませんが、Sheet2のA列に入力する数値は1からの連番であれば もっと簡単な数式でよいのですが、とりあえず、連番でなくても対応できるようにしてみました。 今回は作業用の列は使っていません。 Sheet2のB3セルに =IF(COUNTIF(Sheet1!$B$2:$B$1000,$A$1)<ROW(A1),"",INDEX(Sheet1!A$2:A$1000,SMALL(IF(Sheet1!$B$2:$B$1000=$A$1,ROW($A$1:$A$999)),ROW(A1)))) これは配列数式になってしまいますので、この画面からB3セルに貼り付け後、 F2キーを押す、または貼り付けセルをダル部クリック、または数式バー内で一度クリックします。 編集可能になりますので、Shift+Ctrlキーを押しながらEnterキーで確定します。 数式の前後に{ }マークが入り配列数式になります。 これを列方向と行方向にオートフィルでコピーし、A1セルに入力した銀行名の項目だけを表示させます。 その後、質問者さんがA列に数値を入力します。 そして、F3セルに =IF(COUNT($A$3:$A$100)<ROW(A1),"",INDEX(A$3:A$100,MATCH(SMALL($A$3:$A$100,ROW(A1)),$A$3:$A$100,0))) これは配列数式ではありません。このままコピー&ペーストだけでOKです。 これを列方向と行方向にオートフィルでコピーすると画像のような感じになります。 日付の列はセルの表示形式から「日付」にしておいてください。 尚、数式はSheet1の1000行目まで、そして、抽出後のデータの100行目まで対応できるようにしています。 以上、長々と書きましたが 参考になれば幸いです。m(__)m

hyolli
質問者

お礼

大変おそくなりました。 仕事で使うデータで困っていたので大変助かりました。 本日また、質問をしています。 tom04さんから教えてもらった関数を見て、自分なりに 応用して作ろうと試みたのですが、やはりできませんでした。 似たような関数だと思いますが、もしよろしければ、またご回答お願いします。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (7)

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

Sheet2のA列に任意の数字を入力するような設定にするなら、以下のような関数でご希望のデータを表示することになります。 B3セルに以下の式を入力し、右方向にE列まで、および下方向に適当数オートフィルします。 (ただし、この数式は多用するとシートの動きが重くなるので注意が必要です) =IF(COUNTIF(Sheet1!$B$2:$B$100,$A$1)<ROW(A1),"",INDEX(Sheet1!A:A,SMALL(INDEX((Sheet1!$B$2:$B$100=$A$1)*ROW($A$2:$A$100),),ROW(A1)+COUNTIF(Seet1!$B$2:$B$100,"<>"&$A$1)))) F3セルには以下の式を入力し下方向にオートフィルします。 =IF(A3="","",SMALL($A$3:$A$100,ROW(A1))) G3セルに以下の式を入力し、右方向にI列まで、下方向に適当数オートフィルします。 =IF($F3="","",VLOOKUP($F3,$A:$E,COLUMN(B1),0))

全文を見る
すると、全ての回答が全文表示されます。
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.7

No.1・5・6です! 前回の投稿がダブってしまいました。 ダブりすべてを削除できませんでしたので、後のほうの画像だけ削除させていただきました。 本文も画像がある方を読んでください。 何度もごめんなさいね。m(__)m

全文を見る
すると、全ての回答が全文表示されます。
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.6

No.1です! 前回はかなり先走ってしまって、ご希望とはかけ離れたものになってしまっていたようで 失礼しました。 もう一度画像をアップします。 ↓の画像でSheet2の左側のようにA1セルに入力した銀行名の項目を抽出し、A列の番号は質問者さんが手入力し、 それを番号の小さい順に表示したい!ということですよね? 今回は作業列を使わずにできると思います。 Sheet2のB3セルに =IF(COUNTIF(Sheet1!$B$2:$B$1000,$A$1)<ROW(A1),"",INDEX(Sheet1!A$2:A$1000,SMALL(IF(Sheet1!$B$2:$B$1000=$A$1,ROW($A$1:$A$999)),ROW(A1)))) これは配列数式になってしまいますので、この画面からコピー&ペーストしただけではエラーになると思います。 B3セルに貼り付け後、F2キーを押す、または貼り付けセルをダブルクリック、または数式バー内で一度クリックします。 編集可能になりますので、Shift+Ctrlキーを押しながらEnterキーで確定します。 数式の前後に{ }マークが入り配列数式になります。 このB3セルを列方向と行方向にオートフィルでコピーします。 その後、A列に番号を入力。 もしA列の番号が1からの連番であればもう少し単純な式で大丈夫なのですが、とりあえず、どんな数値を入力しても入力した数値の小さい順に表示するようにしてみました。 F3セルに =IF(COUNT($A$3:$A$100)<ROW(A1),"",INDEX(A$3:A$100,MATCH(SMALL($A$3:$A$100,ROW(A1)),$A$3:$A$100,0))) (これは配列数式ではありません。) として列方向と行方向にオートフィルでコピーします。 日付列は表示形式で「日付」を選択。 尚、数式はSheet1の1000行目・Sheet2に抽出したデータの100行目まで対応できるようにしています。 以上、長々と失礼しました。 参考になればよいのですが・・・m(__)m

この投稿のマルチメディアは削除されているためご覧いただけません。
全文を見る
すると、全ての回答が全文表示されます。
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.4

例えば、任意の数字が1から始まる連番で、表示条件が日付の若い順に抽出したいなら、以下のような数式で直接A3セル以下にご希望のリストを表示することができます。 A3セル =IF(COUNTIF(Sheet1!$B$2:$B$100,$A$1)<ROW(A1),"",ROW(A1)) B3セル(セルの書式設定で表示形式を日付にする) =IF(A3="","",SMALL(INDEX((Sheet1!$B$2:$B$100<>$A$1)*10^10+Sheet1!$A$2:$A$100,),ROW(A1))) C3セル =IF(A3="","",$A$1) D3セル =IF($A3="","",INDEX(Sheet1!C:C,MAX(INDEX((Sheet1!$A$2:$A$100=$B3)*(Sheet1!$B$2:$B$100=$C3)*ROW($A$2:$A$100),)))) E3セル D3セルの式を右方向にオートフィルコピー これら5つのセルを下方向に適当数オートフィルコピーすれば、A列に1から始まる連番でA1セルに入力された銀行のデータが表示されます。

hyolli
質問者

補足

迅速なご回答ありがとうございます。 説明の画像で偶然日付順になったのですが、 日付順というわけではなく、私が付けた番号順での 並び替えができる関数を探しています。

全文を見る
すると、全ての回答が全文表示されます。
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.3

どのような目的でSheet2のA3以下に「任意」の数字を入力するのでしょうか? この数字が、単純に1からの連番なのか、それとも全くばらばらの「任意の数字」なのかによって使用する数式が異なります。 また、この数字が例えば日付の早い順に並べ替えたいなどの基準があるなら、該当データをわざわざA列からE列までに抽出しなくても、直接F列からJ列の表を作成することもできます。 ご希望の操作を、目的を含めて補足説明してください。

hyolli
質問者

補足

迅速なご回答ありがとうございます。 説明の画像で偶然日付順になったのですが、 日付順というわけではなく、私が付けた番号順での 並び替えができる関数を探しています。 また、連番ではなく数字の小さいもの順から 並び替えたいと考えています。 下の数字は横並びですが、エクセルで縦並びと考えた時に 15 2 9 6 5 1 この数字を 1 2 5 6 9 15の順に 並び替えたいと希望しています。(任意の番号の部分の説明です) 説明が下手ですいませんがよろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

F3セルには次の式を入力してJ3セルまでオートフィルドラッグしたのちに下方にもオートフィルドラッグします。 =IF(ROW(A1)>MAX($A:$A),"",IF(COLUMN(A1)=1,ROW(A1),VLOOKUP(ROW(A1),$A:$E,COLUMN(A1),FALSE))) なおG列についてはセルの表示形式を日付にします。

全文を見る
すると、全ての回答が全文表示されます。
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! 一例です。 ↓の画像で説明します。 とりあえずSheet1の1000行目まで対応できる数式にしてみました。 Sheet1に作業用の列を1列設けています。 作業列E2セルに =IF(OR(B2="",Sheet2!$A$1=""),"",IF(B2=Sheet2!$A$1,RANK(A2,$A$2:$A$1000,1)*1000+ROW(A1),"")) という数式をいれ、オートフィルで下へずぃ~~~!っとコピーします。 そして、Sheet2のA3セルに =IF(B3="","",ROW(A1)) B3セルに =IF(COUNT(Sheet1!$E$2:$E$1000)<ROW(A1),"",INDEX(Sheet1!A$2:A$1000,MOD(SMALL(Sheet1!$E$2:$E$1000,ROW(A1)),1000))) という数式をいれ、B3セルを列方向にE3セルまでオートフィルでコピーします。 尚、列方向にコピー後、日付の列は表示形式で「日付」にしておきます。 最後にA3~E3セルを範囲指定し、E3セルのフィルハンドルで下へコピーすると 画像のような感じになります。 以上、参考になればよいのですが・・・m(__)m

hyolli
質問者

補足

迅速なご回答ありがとうございます。 説明の画像で偶然日付順になったのですが、 日付順というわけではなく、私が付けた番号順での 並び替えができる関数を探しています。 また、連番ではなく数字の小さいもの順から 並び替えたいと考えています。 下の数字は横並びですが、エクセルで縦並びと考えた時に 15 2 9 6 5 1 この数字を 1 2 5 6 9 15の順に 並び替えたいと希望しています。(任意の番号の部分の説明です) 説明が下手ですいませんがよろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 検索値から、その行の抽出。II

    検索値から、その行の抽出。II シート1にある“あか”の行をシート2に抽出。 任意の番号をふった後、番号の若いもの順に並び替えをしたい。 また、“あか”のみの縦の合計を求めたい(緑色部分) 明日仕事の資料を作りたいので、ご回答いただければ幸いです。 よろしくおねがいします。

  • 検索後、行を抽出するマクロ

    エクセルのシート1、A列からE列まで1~800のセルにテキストが入力されいます A列を検索(部分一致)し、ヒット(複数)した行をシート2へコピーしていのですが出来ません。 因みに、A列は文字列で「赤エンピツ、黄エンピツ」などでエンピツと検索してら両方抽出したいです。 初心者で何も判らず本等を読んでも訳判りません、どなたか御教授よろしくお願いします。

  • 検索値に一致するデータ行の抽出方法(エクセル)

    例えば・・・ ↓データ _ABCDE 1あカa1122 2あキb1223 3いクc1324 4うケd1425 5うコe1526 のようなデータがあったとして、別のシートの任意のセル(例えばA1)に「あ」と入力し、C列に「カ」を入力することでC列以降のデータをD列以降に並べたいのですが・・・ 結果↓ _ABCDE 1う←任意のセル:データシートのA列の検索値 2 3__*項目* 4__ケd1425 5__コe1526 ___↑ ___データシートのB列を検索する値を入力するC列    *データの行数は5000は軽くあります。 *データシートは、受け取る側のシートとは別のファイルにしたい。 *受け取る側は、1~100行になります。(ファイルによります) *受け取る側のファイルは、100ファイルぐらいになります。 *いずれのファイルも列数は2,30列程度です。 *格納するフォルダは同じです。 *できればフォルダ毎別のPCに持っていっても作業できるようにしたい。 環境:構築していくマシンは、Windows2000Pro,Excel2000です。 (実際の抽出作業もこれがメインのPCですが、Win95、98,Excel97、2000でも抽出作業ができれば嬉しいです。)

  • 行抽出マクロについて教えてください。

    エクセルのシート1のB列に整理番号(順不同)が書かれてあり、シート2のC列にも整理番号(順不同)が書かれてあります。 シート1は約数千行・100列、シート2は約数万行・100列です。このシート1のB1と同じ整理番号をシート2のC列より上から検索して、最初に見つかったセル(仮にC7)を含む行をシート3にコピーする。 次にB2について同様にしてシート3にコピーする。この時の検索範囲はC8以下(C7以上は検索範囲外)とする。 同様な作業を続けて、最終的には、シート3のC列がシート1のB列と同じにしたい。 これをマクロで組みたい。どなたかご教授お願いいたします。

  • 検索後、行を抽出するマクロ←を発展させたい

    検索後、行を抽出するマクロを使いたいのですが、 非常に近い質問がありましたので、それを基に質問させていただきます。 (まったく違うマクロになっても構いません。) 下記URLの【merlionXX様】の回答されたマクロを使用しますと、 A列のみを検索対象としています。 http://okwave.jp/qa4730673.html 私が検索したい範囲がA列からI列まであります。 その中で、任意の語句を検索すると、 sheet2(←検索結果と名前のシートにしたい)のA2から、 検索結果を表示したいのですが、どのように記述を変えたらできますか。 なぜ、A2からの表示にしたいかと言うと、 A1からI1までは、各項目名を入力しておきたいからです。 どうか皆様の知恵を貸していただけないでしょうか。 宜しくお願い申し上げます。

  • 行の内容で検索し一致したセルを抽出したい

    閲覧ありがとうございます。 エクセルであるデータを作成しています。 とある行と一致した場合その同じ行のある列の内容を抽出をする関数を作成したいのですが試行錯誤してもどのように作成したらいいかわかりません。 内容は画像のようにしたいのですが関数で行うことは無理でしょうか? 実際は800行以上あるのでなるべく楽な方法が良いのですが... どうかよろしくお願い致します。

  • エクセルで検索→抽出

    お願いします。 シート(1)に次のように入力されています。 A列 B列 C列 D列 E列 → Y列 番号 県 性別 年齢 来社 1行目   1 東京 男  45 09/21  2行目   2 京都 女  33 10/07  3行目   3 福島 女  49 10/25  4行目   4 京都 男  25 12/05  5行目   5 東京 女  30 12/30  ↓ 以上のようにY列まで項目と、1110人のデータが 入ったシート(1)があります。 シート(2)に検索したい文字を入れて抽出する方法を教えてください。 例えば京都出身の人を検索したい場合↓ シート(2)の1行目にはあらかじめシート(1)の項目をコピーしておく 検索したい『京都』は「県列」の項目だから B列の2行目に『京都』と入力する。(1行目には項目) 3行目以降に検索結果↓が表示される。 2 京都 女  33 10/07  スイカ 4 京都 男  25 12/05  モモ 8 京都 女  58 05/04  りんご 12 京都 女  12 06/20  オレンジ また、年齢10~35を検索したりなどもできれば… データを入力したり検索したりするのは、パソコンに不慣れな方ですので エクセルに詳しくない人でも簡単に使用できるよう作成できればと思います。 以上、 検索項目を入力し、下の行に抽出されるような関数はありますでしょうか・・・? なければ近いものでも構いませんので教えてください。 宜しくお願い申し上げます。

  • データ抽出について

    エクセル初心者です。 エクセル2003を使っています。 sheet1に元データとなる表があります。 ・データセル内は数値データです。 ・行方向へは200程度 ・列方向へは1500程あります。  A   B    C    D   E     F  1日付 項目1 項目2 項目3 項目4 項目5 ・・・ 2 3 4 5 6 この元データからsheet2へ日付をキーにして行データを抽出したいのです。 抽出先のsheet2のA列に予め目的の日付データのみ1200程入っています。 最初Vlookupでやり始めたんですが無理と分かりました。 フィルタオプションで試みたのですが、「検索条件範囲」の式の書き方が 分からず困っております。 OKWaveの関連したQAを参考に試行錯誤を続けていましたが、進展がありません。 お詳しい方よりのご回答をお待ちしております。

  • excelの複数シートを検索対象にして重複行を抽出する方法

    ある値が重複する行を抽出したいのですが 抽出元データが600,000行近くあり、1sheetに入らず9シート程に分けました。 countifを使おうとしたのですが検索範囲に複数シート指定が出来ず(3D-参照の対象関数ではないようです)、 =COUNTIF('sheet1:sheet9'!$C:$C,C1)としてみたのですが、重複行があっても全て#VALUE!となってしまうので機能できていないようです。 具体的には sheet1~8に下記のようなデータがあり、C列が重複する行を抽出したい。 A列:id、B列:名前、C列:メアド、D列:xx 宜しくお願い致します。

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

    エクセルの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列に関数を入れておく方法で実行したいと思います。 よろしくお願いいたします。

専門家に質問してみよう