0

こんな簡単な機能を開発したい

検索(値、範囲、オフセット)

次の表が与えられた

     A    B    C   

1    10   A    desc for 10a
2    20   B    desc for 20b
3    30   C    desc for 30c

以下を返します

Search(10; a1:c3; 3) -> desc for 10a
Search(A; a1:c3; 3)  -> desc for 10a

Search(20; a1:c3; 3) -> desc for 20a
Search(B; a1:c3; 3)  -> desc for 20a
Search(desc for 20a; a1:c3; 3)  -> desc for 20a

つまり、VLookup のように最初の列だけでなく、範囲内の任意の列を検索できるようにする必要があります。

4

1 に答える 1

1

それは、列の予測可能性に依存します。際立った特徴がなければ、苦労するでしょう。ただし、検索文字列からどの列に一致が含まれるかを判断できれば問題ありません。あなたの例では、数値は列 A にのみ存在し、単一の文字列は列 B にのみ存在し、より長い文字列は列 C にのみ存在します。この場合、次の 2 つの式を使用できます。

検索値を E1 に入れます。F1で:=IF(ISNUMBER($E1),0,IF(LEN($E1)=1,1,2))

G1:=VLOOKUP($E1,OFFSET($A$1,0,$F1,10,(3-$F1)),(3-$F1),FALSE)

すべての $F1 を完全な数式に置き換えることにより、2 つを 1 つの数式に確実に組み合わせることができます。機能を明確にするために、ここではそれらを別々にしています。

また、オフセット式の 10 は、ルックアップ範囲の合計行数に対応する必要があります。

于 2012-12-04T05:14:31.320 に答える