• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:検索値がFrom Toの間の場合に特定の値を返す)

特定の値を返すための検索方法とは?

このQ&Aのポイント
  • 「検索値」がFrom Toの間の値である場合に、「結果」の値を返す方法について教えてください。
  • Excelの関数やAccessのSQLなどを使用して、検索値がFrom Toの間の場合に特定の値を返す方法を実現したいです。
  • 表1と表2にデータがあり、表1の検索値がFrom Toの間にある場合に、表2の結果を返す方法を教えてください。

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

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.3

<表1>と<表2>を添付図のようにして考えました。Excel2010です。 セルB1に、 =IFERROR(INDEX($D$7:$F$9,SUMPRODUCT((ROW($D$7:$D$9)-ROW($D$7)+1)*($D$7:$D$9<=A1)*(A1<=$E$7:$E$9)),3),"N/A") と入力して下にコピーします。「N/A」はエラーではなく、文字列にしています。 <表2>でFromToを満足する行を求めています。なければ「0」です。これでIndex関数で「ABC」を持ってこようとしています。 Excel2010(またはExcel2007)でなかったら、IfError関数を、  =If(IsError(Index(・・・)),"N/A",Index(・・・)) に書き換えてください。 また、<表1>と<表2>は行が重複しないように配置してください。行が重なると、Index関数で行を「0」にしたときにエラーが発生せず、結果が安定しない(重複した行の値を返すようです)ようです。行が重複しないと問題なくエラーが出ます。

Nancy-F
質問者

お礼

nishi6様 素晴らしいですね。 SUMPRODUCT関数を初めてしりましたが、このように1行で解決できるとは、思ってもみませんでした。 とても勉強になりました。 ありがとうございました。

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

その他の回答 (3)

回答No.4

作業列を用意して地道に表計算すれば、簡単な数式のみでできます。 A ~ B 列の 2 行目以下に表 1 のデータを記入。G ~ I 列の 3 行目以下に表 2 のデータを記入。その上で、次式を記入。 H2 0 など C2 =match(b2,g:g,1) D2 =match(b2-10^-3,h:h,1)+1 E2 =if(c2=d2,index(i:i,c2),na()) H2 セルに 0 などを記入しておかないと、D 列の MATCH 関数は最初の区間を検出できません。D2 の「10^-3」という部分は、B 列と比べて十分に小さな値であれば幾つでも構わないので、B 列に小数が含まれるときは、適当に大きさを調節してください。 なお表 2 を Sheet2 に置きたいという場合は、ひとまず上のとおり同じシート上に 2 表とも作製した後、G ~ I 列の全体をコピーではなく切り取って、Sheet2 に貼り付けてください。上式に「Sheet2!」という記述が勝手に書き加えられます。

Nancy-F
質問者

お礼

MarcoRossiItaly様 ご教示下さりありがとうございます。 ご指摘頂きました通り、私も作業列を用意してどうにか実現させたので、 手法は同じですが、D2列の式が私の考えたのよりスッキリしております。 自分のロジックと比較して、今後に活用したいとおもいます。 ありがとうございました。

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

続けて失礼します。 画像を添付するのを忘れていました。 Sheet2は↓のような配置です。m(_ _)m

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

こんにちは! VBAになってしまいますが一例です。 ↓の画像のようにSheet2に対応表を作成しておきます。 そしてデータはSheet1のA列2行目以降にあり、結果をB列に表示させるとします。 Sheet1のシートモジュールにしてください。 Sub Sample1() Dim i As Long, k As Long With Worksheets("Sheet2") For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row k = WorksheetFunction.Match(Cells(i, "A"), .Range("A:A"), True) If Cells(i, "A") >= .Cells(k, "A") And Cells(i, "A") <= .Cells(k, "B") Then Cells(i, "B") = .Cells(k, "C") Else Cells(i, "B") = "N/A" End If Next i End With End Sub こんな感じではどうでしょうか?m(_ _)m

Nancy-F
質問者

お礼

tom04様 VBAでのご教示、ありがとうございます。 勉強になりました。 やはりVBAが書けると便利ですね。 ご教示頂いたロジックをもとに、VBAの勉強をしてみます。 ありがとうございました。

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

関連するQ&A

  • エクセル 検索した値の列の一番上をかえすには?

    4×5の表にアルファベットがランダムに重複なく入っている表で、指定したアルファベットのがどの列にあるか求めるにはどうしたら良いでしょうか。 列のタイトルを「あ、い、う、え、お」、 行のタイトルが「ア、イ、ウ、エ」の表で、例えばaがう-イのにあるときに、「う」という値を表示したいです。 A B C D E F 1 □ あ い う え お 2 ア m 3 イ k a … 例:検索値A→結果う よろしくお願いします。

  • 検索 値を返す

    リストが2つあります(同一シート) Aリストは12桁の数字が1000行、Bリストは12桁の数字(これに紐づいた情報含む)が1500行 Bリストの中から、Aリストに記載されている数字を検索し、その行のどこかに○や三角等の値を返したいです。 vlookupで検索はできていますが、検索でヒットBリストのその行をしりたいのです。 宜しくお願いします。

  • 2つの値で検索する場合

    エクセルを使って検索する方法どなたかわかりやすく素人に対するようにお教えてください。  日付と顧客Noから特定の値を検索しようとV look upで検索値(a1&b1) という具合にしたのですがこの時点でエラーになってしまいました。   検索値が1つの場合は問題ないのですが、データ表が日付順のもので同じ顧客Noが違う日付で違う金額の入金ですので、どうしても「○月○日 No.△△△」の金額を検索したいときは2つを指定しないと 正しい値が出てこないと思うのです。 アクセスなら簡単なのでしょうが、PCに入ってないので・・・  どうかよろしくお願いします。  

  • EXCELで範囲内にある値を検索してA列の値を返す

    タイトル通りなのですが、OSはXPでEXCEL2000を使用しています。 シート内ですが 1.A列には文字列が入っています。200行まで空白は無いです。 1.B列からL列の200行までに数字がランダムに入っています。 2.数字は1~500までです。 3.行によってはL列まですべてのセルに値が入ってません。  数字の入っていないセルは空白です。 4.数字の重複はありません。 やりたいことは 別のシートのA列に1~500までの数字を入れ、B列に上記範囲の中からその数字を検索して、その行のA列の値を返したいのですが、出来ません。 どの関数を組み合わせれば出来るのでしょうか? vlookupの検索範囲は1列だけなのでダメでした。 よろしくお願いします。

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

    Windows Xp エクセル2003を使用しています。 業務で使用している集計表ファイルがあり、別ファイルにデータを反映させたいのです。 集計表のセルA1を検索値としセルB1とセルB2の値を返す関数はないでしょうか? 集計表のつくりは約1000行あり、セルA3を検索値としてセルB3の値を返す行もあります。 セルA5を検索値とし、B5、B6、B7、C5,C6の値を返す行など様々です。 こういったデータがランダムで表になっています。一つの検索値に対して、検索値の水平方向はvlookup関数で表示出来たのですが、 一つの検索値で2つの値を返す関数が分からず、困っています。 1行下や2行下を検索する関数も参考にしたのですが、集計表のつくりがランダムの為、検索してほしくないものまで表示されてしまうなど、ウマクできませんでした。 宜しくお願いします。

  • 値の検索方法

    ExcelのVBAについて教えてください。 シートAとシートBがあり、内容は異なりますが同じ項目が設定されています。 シートAのA列の値に一致する値をシートBから検索し行の値を取得したいと思うのですが、シートAもシートBも0埋めされていたりされていなかったり値がばらばらです。 VBAでシートの値を変更せず検索して行情報を取得する方法はないでしょうか? Findとかフィルタでは検索先のシートの値を補正できなくて難しいのかなと思っているのですが可能なのでしょうか。 なお、行数がかなり多いのでシートBを上から一つずつ検索していく方法はなるべく避けたいです。 よろしくお願いします。

  • PHPでテキストデータを検索させたい

    PHPでテキストデータを検索させたいです。 a.csv の中に、 ----- 一番目,1番目の内容です。<br>次行 二番目,2番目の内容です。<br>次行 三番目,3番目の内容です。<br>次行 四番目,4番目の内容です。<br>次行 ----- というような内容のコンマと改行区切りの文字列データが入っていたとします。 それをPHPで文字列全文検索し、ヒットした行のみ書き出したいです。 例えば「一番目」と検索すると、 ----- 1行目がヒットしました。 題名:一番目 内容:1番目の内容です。 次行 ----- と表示させたいです。 同じく「4番」と検索すると、 ----- 4行目がヒットしました。 題名:四番目 内容:4番目の内容です。 次行 ----- と表示させたいです。 次に「二 2」と検索すると、 ----- 2行目がヒットしました。 題名:二番目 内容:2番目の内容です。 次行 ----- と表示させたいです。 「内容です」と検索すると、 ----- 1行目がヒットしました。 題名:一番目 内容:1番目の内容です。 次行 2行目がヒットしました。 題名:二番目 内容:2番目の内容です。 次行 3行目がヒットしました。 題名:三番目 内容:3番目の内容です。 次行 4行目がヒットしました。 題名:四番目 内容:4番目の内容です。 次行 ----- と表示させたいです。 また「一 2」と検索した場合は、 ----- ヒットしませんでした。 ----- と表示させたいです。 つまりスペースで文字列を区切り、and検索するという検索になります。 (スペースがない場合はその文字列のみで検索) できたら、全角スペースでも同じ動作にしたいです。 よろしくお願いいたします。

    • 締切済み
    • PHP
  • betweenとfrom A to B 違い

    betweenとfrom A to B の違いがよく分からないのでお聞きします。 今まで私は,betweenは2つのものについての関係について、 from A to B は,A、Bという2つのものの間 ”~” に相当する と理解していました。 例えば、 ・some value between 0 and 1  (0か1のなんらかの値) ・some value from 0 to 1 (0以上1以下のなんらかの値) という感じ。 しかし、以下のような例文があり、よくわからなくなりました。 Space ALC の"between"の例文より(http://eow.alc.co.jp/between/UTF-8/) Between 100 and 150 comedians will take turns at performing on stage. 公演では100人から150人のお笑い芸人が入れ替わりで舞台に立ちます。 100か150とは考えないのか?

  • エクセルで値を指定しての検索が出来ない場合の同じ値のセルをすべて抽出す

    エクセルで値を指定しての検索が出来ない場合の同じ値のセルをすべて抽出する方法 エクセルのA列に上から順に A1みかん A2リンゴ A3みかん A4パイナップル A5マンゴー A6みかん A7パパイヤ A8リンゴ A9バナナ A10グレープフルーツ A11みかん A12レモン という具合に1000行くらいあって同じ値のみを抽出する方法を教えてください。 上記の場合 A1みかん A3みかん A6みかん A2リンゴ A8リンゴ という具合に表示してほしい。 同じ値の行は最大3つ(3種類×3行)、又は2つ(2種類×2行)です。 後の980行くらいはそれぞれ値が違います。 また同じ値が何で有るのかも不明です。 上記例ではみかんとリンゴですが、そうだとは限りません。 レモンかもしれないし、マンゴーかもしれない。 またその1000行の中の値の種類も何種類あるのか不明です。 最悪1000種類で重複は無いかも知れない。 よって値を指定しての検索は出来ません。 ソートして昇順にとかにすれば同じ値は上下に並びますが 実際には、みかん とかではなく英数字20ケタなので目で見ただけで 上下に並んでいるのは見つけれません。 12A3456D620X834F7623 14B63795V63879576235 167353F46856G6983639 167353F46856G6983639 16C342D374A755C65833 1000行の中からこのように上下が同じ値の行を見つけるのは難しいです。 簡単に発見する方法はありますか?

  • 一致した行を返したい

    excel2007を使っています おしえてください    A   B   C 1   1   3 2   2   8 3   2   3 4   1   3 5   7   8 6   2   8 7   1   3 このような表がありA1の1と同じ1をA列2行目から検索 B1の3と同じ3をB列2行目から検索 どちらも値が一致した行(検索開始行から数えて何番目)をC1に返したい (この場合3と6がありますが早く一致した3を返したい) C2は4となります Cに入れる数式を是非教えてください

専門家に質問してみよう