
「検索値」がFrom Toの間の値である場合に、「結果」の値を返したいのですが、
Excelの関数、もしくは、AccessのSQL等で実現できますでしょうか。
2つの表があります。
<表1>
[行番][検索値]
1; 1395
2; 2059
3; 0059
4; 5928
5; 3000
<表2>
[From] [To] [結果]
0000; 1000; A
1050; 2000; B
3000; 5000; C
※FromからToの間隔はランダムです。
また、前行のToと次行のFromも連続していない場合があります。
表1の行番1には、「B」
表1の行番2には、N/A を返す。
色々調べてみたのですが、解決策が見つかりませんでした。
ご教示頂けると幸甚です。
何卒よろしくお願い致します。
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」にしたときにエラーが発生せず、結果が安定しない(重複した行の値を返すようです)ようです。行が重複しないと問題なくエラーが出ます。

nishi6様
素晴らしいですね。
SUMPRODUCT関数を初めてしりましたが、このように1行で解決できるとは、思ってもみませんでした。
とても勉強になりました。
ありがとうございました。
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!」という記述が勝手に書き加えられます。

MarcoRossiItaly様
ご教示下さりありがとうございます。
ご指摘頂きました通り、私も作業列を用意してどうにか実現させたので、
手法は同じですが、D2列の式が私の考えたのよりスッキリしております。
自分のロジックと比較して、今後に活用したいとおもいます。
ありがとうございました。
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
tom04様
VBAでのご教示、ありがとうございます。
勉強になりました。
やはりVBAが書けると便利ですね。
ご教示頂いたロジックをもとに、VBAの勉強をしてみます。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
首吊りどこ締めるの
-
彼女のことが好きすぎて彼女の...
-
検便についてです。 便は取れた...
-
2つの数値のうち、数値が小さい...
-
風俗店へ行く前のご飯
-
血液検査の結果が悪くefgrの値...
-
小数点以下を繰り上げたものを...
-
リンク先のファイルを開かなく...
-
透亮像について。 先日会社の健...
-
excelでsin二乗のやり方を教え...
-
excel関数で TRUEやFALSEについて
-
イタリアから帰国する際、肉製...
-
【エクセル】0以外が入力され...
-
MIN関数で空白セルを無視したい...
-
Excel 0目標に対して数字があ...
-
「内数」という言葉の意味がよ...
-
ワードのページ番号をもっと下...
-
値が入っているときだけ計算結...
-
Excel 数値の前の「 ' 」を一括...
-
WORDで複数語句を検索するには
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
首吊りどこ締めるの
-
アトピー性皮膚炎
-
コロナになるのが死ぬほど怖い...
-
検便についてです。 便は取れた...
-
24歳、女性です。性欲が強すぎ...
-
未成年の従姉妹が自分の真似絵...
-
頭痛に関する質問です。現在高...
-
血液検査の結果が悪くefgrの値...
-
肝臓がんになりたいです。肝機...
-
何故 削除され続けるか、
-
◎敢えてノンジャンルカテゴリー...
-
彼女のことが好きすぎて彼女の...
-
腕を見たら黄色くなってる部分...
-
風俗店へ行く前のご飯
-
2つの数値のうち、数値が小さい...
-
病院側から早く来てくださいと...
-
EXCELで条件付き書式で空白セル...
-
Excel 数値の前の「 ' 」を一括...
-
リンク先のファイルを開かなく...
-
値が入っているときだけ計算結...
おすすめ情報