• ベストアンサー

エクセルで、検索したセルの下の行を出したいときは?

たとえば、一つのシートに数字が入った表があるとして(シート1)、 隣のシート(シート2)でA1のセルに数値が入るとシート1から 同じ数値を探し出す(作業しているのはB1)。 その探し出したセルの下の行にあるものを出したいのですが、 その方法がわかりません。関数の数式の中で、 ”+1行”とか、”+1列”というのは、 どういった入力をすればいいのでしょうか? ちょっと説明がうまくできないので、伝わりづらいと 思いますが、補足していきますので、よろしくお願いします。

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

  • ベストアンサー
  • tascany
  • ベストアンサー率48% (15/31)
回答No.5

簡単なやり方を思いついたので回答いたします。 基本的な関数を二個(IFとCOUNTIF)使ってるだけですので、目的を達成できそうなら、是非お試しを・・・。 シート1の一行目に(Aさん、Bさんといった)フィールドがあり、第1期から第3期まで、つまりB2:D4の範囲で値(販売台数)が入ってるとします。 1)シート2に、シート1と同じフォームの表をコピぺ(値不要)。 2)その下に、シート1上で検索しようとする数字を記入するセルを用意し(問題文でいうとシート2のA1セル。ここではB6=下のX欄とします)、さらに、できればそのすぐ下に、翌期の販売台数を集計するため、それをあらかじめ昇順(または降順)にいれておきます。下のような感じ。     A  B  C 1期         2期         3期         当期 X 翌期 1(※翌期販売台数1台)     2     3     … 3)B2に「=IF(Sheet1!B1=$B$6,Sheet1!B2,"")」を貼り付け、B2:D4の範囲でコピー(シート1にある、一つ上の行の値をチェックするためのものです)。※二行目の数式は、前期実績がないから本当は不要なんですが。 4)B7以下に翌期販売台数をいれてあるので、それぞれその右隣に式をいれます。つまり、C7に「=COUNTIF($B$2:$D$4,B7)」を貼り付け、それを下方にコピーしてください。 5)たとえば、販売台数が2台だった時期の翌期の実績が知りたいなら、X欄(B6)に「2」といれます。そうすると、シート1上で「2」のすぐ下にある値(その翌期の販売台数)だけが、シート2のB2:D4上に返されます。また、そのうち「1」が三件あるとすると、シート2のB7「1」の右隣り(C7)の値が「3」となります。 6)翌期販売台数の値が返ってきたら、Xといっしょにコピーして、値「だけ」を別のところに貼り付けて(すぐ右隣にストックしていっていいと思います)表を作成していってください。 ※行(A,B,・・・)、列(1,2,・・・)、シート名は手元の表にあわせて書き替えてください。

vulcan800
質問者

お礼

返事が遅くなり申し訳ありませんでした。 tascanyさんの回答で目的の表が作れそうです! これから自分で応用して完成させたいと思います。 こんな方法があるんだな~と感心するばかりです。自分で答えを導き出せる様になると、 パズルを完成させるように、きっと楽しいだろうなと思います。 これから少しづつ勉強して自分のレベルを上げたいと思います。

その他の回答 (4)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.4

#2です。 >販売台数の表などで、一番上の行には「Aさん、Bさん、Cさん・・・」 左の列には(Aの列)「1期、2期、3期、・・・」というように入っていて、たとえば、 販売台数が10台だった所を検索し、その次の時期が何台なのかが知りたい。 ---------------  各期・個人別販売台数表      A    B    C 第1期  8 7 10 第2期 10 8 7 第3期 12 13 5 第4期 6 8 13 なら  Cの第1期の10の次期7 Aの第2期の10の次期12 をみつけるのでしょうか。 10は可変でしょうが、Sheet2に入力する。 結果はどのSheetのどのセルにどのように出すのでしょうか。 Cが      A    B    C 第1期  8 7 10 第2期 10 8 10 第3期 12 13 5 第4期 6 8 13 なら10の次10、10の次5のように出すのでしょうか。 この質問の解決は、VBAでないと無理のように思う。

vulcan800
質問者

お礼

返事が遅くなり、申し訳ありませんでした。 VBAですか・・。今までマクロ同様むずがしそうなので、目をそむけていました。 これから少しづつ勉強しようと思います。 ちょっとパソコンを見る時間が空いてしまったので、次のNo5さんの回答が出ていました。そこで大体の目的の表が作れそうなので、それを自分で応用して、完成させたいと思います。 この質問に取り組んでいただき、本当にありがとうございました。

  • WWolf
  • ベストアンサー率26% (51/192)
回答No.3

シート1の「数字が入った表」とは、仮に10行×10列の表で探すのはシート2のA1に入った値と同じ値のセルの一つ下のセルの値でしょうか?

vulcan800
質問者

補足

はい。そうなんです。NO.2さんの補足で答えたような内容なんですが、 うまく伝えられませんでした。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

質問内容確認 シート1に(数値列)データがあるとして、シート2のA1に、数値を入力すると、シート1のデータの中から同じ数値をみつけ出したい。 2つ以上ある場合はないのですか?。 2つ以上あれば、あるだけ出したいと言う質問もよくあり、数日前に答えました。 (同じデータは1つしかあり得ないデータならそれでも良いですが) それと見つかった行の右隣列のデータを採りたいが多いと思いますが、直下行で良いのですね?。 同じ数のセルをみつけて、その直下行で良いのなら =OFFSET(Sheet1!$A$1,MATCH(A1,Sheet1!$A$1:$A$100,0),0) 見つからない場合のエラー表示は、式が長くなるので略。 $A$100は最下行ですから適当に。

vulcan800
質問者

補足

申し訳ありません。やはり情報をうまく伝えられませんでした。 データの表の中に同じ数字のものは存在します。 (imogasiさんが数日前に答えられたものがどれかもわかりませんでした。 6千件以上回答されているなんてすごいですね!尊敬します!) 具体的な形で表すと、販売台数の表などで、一番上の行には「Aさん、Bさん、Cさん・・・」 左の列には(Aの列)「1期、2期、3期、・・・」というように入っていて、たとえば、 販売台数が10台だった所を検索し、その次の時期が何台なのかが知りたい。 その際、誰の成績かは問わない。また、複数の答えがあるので、 1台=2件、2台=4件、3台=12件・・・・というように、それぞれ数えてくれるとベストです。 ここまで書いて、最初の私の質問がどれだけバカなものか解かりました。 申し訳ありませんでした。

noname#176215
noname#176215
回答No.1

=INDEX(Sheet1!A:A,MATCH(Sheet2!A1,Sheet1!A:A,)+1) こうでしょうか。

vulcan800
質問者

お礼

素早い回答ありがとうございました。 ただ、ちょっと僕には使い方がわかりませんでした。 (本当に申し訳ありません。) 実際にコピーしてエクセルに貼り付けてみたのですが、 関数を使うときに出る小さいウインドウの使い方がわかりませんでした。

関連するQ&A

  • エクセル最終行の下に貼り付け

    VBAで以下の作業を教えて下さい。 Sheet1のB列に入力済みのセルが何行かあります。 その入力済みのセルの値をコピーして、Sheet2のA列の入力済みの最終行のすぐ下の行に貼り付ける。 *Sheet1のB列の入力済みのセルの行数は毎回変わります。 *Sheet2のA列には一番最初は何も入力されていない状態です。 宜しくお願い致します。

  • エクセルの関数について。

    エクセルの関数。 Sheet1の作業列1のA2セルに =IF(COUNTA(Sheet2!2:2)=0,"",IF(Sheet2!A2="",A1,Sheet2!A2)) →数式1とする 作業列2のB2セルに =IF(A2=$D$2,ROW(),"") →数式2とする という数式を入れA2・B2セルを範囲指定 → B2セルのフィルハンドルで下へコピーしておきます。 (Sheet2の行数以上コピーしておく) そしてE2セルに =IF(COUNT($B:$B)<ROW(A1),"",INDEX(Sheet2!B:B,SMALL($B:$B,ROW(A1)))&"") →数式3とする という数式を入れオートフィルで列方向・行方向にコピーする。 教えて頂きたいことは、数式1、数式2、数式3が何を意味しているのか。 と、この数式を使って、表を作成したのですが、ある特定の数字(コード、D2セルに入力)を入力しても反応してくれない。 (E2~H2まで、空白セルの状態になります。) (sheet2は約1200行あります。) 教えて頂けないでしょうか?

  • エクセルでアクティブなセルの行と列を反転表示したい

    セルのかたちが正方形に近い、約100行(日付)と100列(項目)の表があります。 ひとつのセルの中には2桁(0~99)までの数字を入力し、縦横それぞれの最後尾でSUM関数により 合計値を出しています。 すべてのセルに数字を入力するわけではないので、よく間違ってとなりの項目に 数字を入力してしまうことがあります。 入力ミスを防ぐ為に、入力する際にアクティブなセルの行と列同時に反転表示する方法はありますでしょうか。(十文字のイメージ) 動作はブック全体ではなく任意のシート(Sheet1)のみで行いたいです。 エクセル2003です。 よろしくお願いします。

  • エクセルで三行ごとのデータを1行ごとに表示させたい

    下のように三行ごとにあるセルを参照し、他のセルに一行ごとに表示する方法(関数、もしくはマクロなど)   A B C D 1 あ     あ 2       い 3        4 い 5 6 7 う 8 あるいはあるセルに入力されている数値を数式内の行、または列として指定する方法を探しています。 (たとえばA1に4、A2に3と入力されていたとき、B2でその数値を取得しC3の内容を表示する、といった感じです) 簡単そうなきがするのですが私の検索が悪いのか、見つけることが出来ませんでした。ご存知の方お願いします

  • エクセルで行から数値を検索し、検索した数値のある列

    エクセルで行から数値を検索し、検索した数値のある列から左側の全ての合計を求めたいです。   A B C D E F 1  3 4 8 9 11 22 ←数字は隙間なくあるが、値がバラバラ(ただし昇順) 2 3  2~6行には色々な数字がまばらにある 4 5 6 1行目から検索したい数→10(別のセルで数式結果として出た数) ズレてるかもしれませんが・・・ E1セルに書かれている「11」の数字より前のD列、 A~D列の2行目~6行目の合計を各行ごとに別々に出していきたいです、どうしたらいいでしょうか また、表は行も列もデータを追加していく予定です

  • 列と行にある指定文字が一致したセルの一行下の値

    表2セル"A"を表1B列から探し同行にある"合計"という文字の1行下の数値及び2行下の数値を表2のH4,H5セルに入力し同様に"B","C"に対しても行いたいのですがどなたか関数が解る方よろしくお願いします。環境はoffice2019です。

  • エクセルで入力済みのセルのみ見つけて・・

    エクセルで入力済みのセルだけを見つけ出して、 指定した場所に並べる作業をマクロで1発で出来るようにしたいのですが、その方法を教えてください。 シートが37シートあります。(sheetA1~sheetA12,sheetB1~sheetB12,sheetC1~sheetC12,sheet37) それぞれセルC5からC20まで数値が入っていますが、 最終行はC20とは限りません。(sheet37はまとめるためのシートで空白) C15が最終行の場合もあれば、C18が最終行の場合もあります。 各シートそれぞれ最終行が違います。(列は同じですスタートもC5です) 各シートのC列の入力済みのセルの数値をsheet37のB1セルから順番に縦に並べたいのです。 A,B,Cのシート順にC列に入力された数値を縦に並べます。 空白は無しで詰めて並べます。 これを1回の作業でできるマクロを教えてください。 それから入力済みの最終行を見つけ出すマクロの部分を表示して頂けるとありがたいです。 宜しくお願いします。

  • Excel VBA B列を検索して1行下をコピぺ

    はじめまして。 VBAを始めたばかりですが、自分ではどうにもならないので、教えていただければと思い、初めて質問致します。 A1~G1、1行目から1000行目まで各セルに数字がランダムに1つずつ入っているデーターSheet1があり、コマンドボタンを押すことによってMsgBoxに入力した数字をB列を下に検索していき、例えば、数字の8が入力されたら、B1から下にB列に8が出現したらそのセルの1つ下の行(A列~G列まで)をコピーしてSheet2に抽出したいと考えているのですが、なかなか出来ず、困っています。 イメージとして A B C D E F G H I 1 5 14 30 25 30 3 9 2 22 34 6 7 29 49 3 3 1 8 20 4 10 6 45 4 30 15 34 50 2 5 9 5 11 8 45 7 6 20 1 6 40 8 48 25 36 4 10 7 21 22 30 28 6 7 36 8 2 3 50 2 1 43 6 と、データがSheet1に仮にあって、8が入力されたなら4行目の 30 15 34 50 2 5 9 と 6行目 40 8 48 25 36 4 10、7行目 21 22 30 28 6 7 36という様に抽出されてSheet2に 上から順に貼り付けられる様にしたいので、皆様の御知恵をお貸しいただければと 思っております。かなり複雑かとは思いますが、どうか宜しくお願いいたします。 FINDやOFFSET、IF文、ループ等を使ってみましたが私のレベルでは全く話になりませんでした。 まだVBAかけだしなもので、なるべ簡単なくプログラムでお願いいたします。

  • Excelの数式のコピーで列移動で行番号を変えたいのですが

    Excelで表管理をしているのですが、数式のコピーをする時に列を移動させて行の方を変更させる方法は無いのでしょうか? 例えばB2のセルに(Sheet2!B2)と入っている物を、C2,D2,E2…と列の方にコピーをさせた場合に(Sheet2!B3)、(Sheet2!B4)(Sheet2!B5)と行の方の数字だけを変更させたいんです。 $を付けたりして試して見たのですが行は行、列は列の方しか参照してくれないみたいなので、何か方法があれば教えて頂けないでしょうか? 作りたい表の数が多く手入力では大変なので、簡単な操作があればよろしくお願いします。

  • エクセルのシーとコピーで

    シート1に 数値が入っています。 その数値を シート2に コピーするには =シート1!A1の 数式を入れれば シートA1の数値が シート2に入りますが シート1のA列の数値を 等間隔で飛ばして シート2に入れようとして シート2のB列の1に =シート1!A1 シート2のB列の2に =シート1!A10 と 入力して 二つセルを合わせて コピー下にスライドしていけば 等間隔で シートBに 9行空けた間隔のシート1の数字が入ると思ったけれど 無理でした。 どなたか 簡単に シート1の数値を等間隔で飛ばして シートBの縦列にコピー出来る簡単な 方法は無いでしょうか? 宜しくお願いします。

専門家に質問してみよう