プロが教えるわが家の防犯対策術!

今までVLOOKUP関数を使っていたんですが、
どの列の値を返すのではなく、
右のセルの値を返したいときは
どういった関数を使えばいいのでしょうか?

A 回答 (7件)

#4と#5です。



=IF(COUNTIF(A1:F4,G1)>1,"重複",INDEX(A1:F4,SUMPRODUCT((G1=A1:F4)*(ROW(A1:F4))),SUMPRODUCT((G1=A1:F4)*(COLUMN(A1:F4)))+1))

関数でするならこちらの方がいいかなと思います。
この数式の範囲はすべてA1:F4です。
範囲が2行目から始まるなら
=IF(COUNTIF(A2:F5,G1)>1,"重複",INDEX(A2:F5,SUMPRODUCT((G1=A2:F5)*(ROW(A2:F5)))-1,SUMPRODUCT((G1=A2:F5)*(COLUMN(A2:F5)))+1))
と、マイナス1を付け加えてくださいね。
    • good
    • 0

いちおうエラーチェックが甘いですが、


ユーザー定義関数を作ってみました。

=exVlookup("くく",A1:F4,2,2)
Function exVlookup(検索値, 範囲 As Range, 列, 範囲の幅)
Dim i, j

For i = 1 To 範囲.Rows.Count
For j = 1 To 範囲.Columns.Count Step 範囲の幅
If 範囲.Cells(i, j) = 検索値 Then
exVlookup = 範囲.Cells(i, j + 列 - 1)
Exit Function
End If
Next j
Next i
exVlookup = CVErr(5000) 'N/Aを返したいが…
End Function

ちなみに#4の方法だと、同じ値が有った時にエラーになればいいけど、ならずにでたらめの値が返る場合があります。
また、存在しない値を検索した場合もエラーにならずに、最初のセル(ああ)が返ります。
A1から始まる範囲でない場合もう一工夫必要。
    • good
    • 0
この回答へのお礼

お礼が遅れて申し訳ないです。
意味を飲み込もうとして頭が割れそうなのでもうしばらくお待ちを・・・

お礼日時:2005/02/11 20:38

#4ですが、言い忘れました。


G1に検索値を入力してくださいね。
    • good
    • 0

複数列から検索する場合、


=INDEX(A1:F4,SUMPRODUCT((G1=A1:F4)*(ROW(A1:F4))),SUMPRODUCT((G1=A1:F4)*(COLUMN(A1:F4)))+1)
としてみてください。
    • good
    • 0

#1の補足のような配置になっている場合、標準の関数ではできないと思います。


VBAでユーザー関数を作ればできるとは思いますが。
    • good
    • 0

右のセルの値とは検査範囲の右という意味ですか?


LOOKUP関数をつかえばよいのでは?
返す値を検査範囲の右の列に指定すれば結果的に右のセルの値が返ってくるはずですけど???
    • good
    • 0

質問の意味がはっきり分からないので予測で書きますが・・・



どの列の値を返すのではなく とは
その列の値を返すのではなく と考えて、
検索して見つかった値の右のセルの値を返したいと仮定します。

たとえば

  A   B
1 ああ  1
2 いい  2
3 うう  3
4 ええ  4


=VLOOKUP("ああ",A1:A4,1,FALSE)
とすると結果は"ああ"になりますが、
それを1と返したいということでしょうか?

その場合は
=VLOOKUP("ああ",A1:B4,2,FALSE)
とします。
A1:B4の範囲を検索し、(検索キーは一番左側のA列)
2番目の列(ここではB列)の結果を表示するという意味です。

dorackenさんの意図した質問と意味が違っていれば
もう少し具体的な補足をお願いします。

この回答への補足

実は検索したい値が複数の列に配置されているのと、
返したい値も、複数の列に配置されているからです。

  A   B  C    D  E   F
1 ああ  1  かか  1  ささ  1
2 いい  2  きき  2  しし  2
3 うう  3  くく  3  すす  3
4 ええ  4  けけ  4  せせ  4

すべて一列にまとめられればいいのですが、
みずらいので・・・・

補足日時:2005/02/10 19:49
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!