2017-02-03 12 views
-2

This pictures shows my table and formula's yieldExcelでExcelを援助しようとしています

私は次の式を使用してテーブルから結果を抽出しました。

それは完璧に動作しますが、私はExcel式についての理解を深めることを望んでいます。

ExcelでIFを頻繁に使用するのは困っています。

私が知りたかったのは、異なるアプローチを使用することができるかどうかということです。これは、類似している可能性がありますが、おそらくもっと洗練されたものです。

=IF(OR(J2="08L",J2="08R"),IF(ISNUMBER(MATCH(LEFT(I2,3),'SID separations'!$D$34,0)),"LAM",IF(ISNUMBER(MATCH(LEFT(I2,3),'SID separations'!$D$35:$E$35,0)),"West",IF(ISNUMBER(MATCH(LEFT(I2,3),'SID separations'!$D$36:$G$36,0)),"East",IF(ISNUMBER(MATCH(LEFT(I2,3),'SID separations'!$D$37,0)),"SFD",NA())))),0) 

非常に助けていただきありがとうございます。

+0

残念ながらCASE構文はありません。あなたは、VLOOKを使ってみるか、いくつかのVBAコードを書きます。 – Nicolaesse

+0

@Nicolaesse、なぜVBAコードが優れていますか?エクセル - あなたのテーブルがどのように見えているのか、あなたが達成しようとしているものを見せてくれるかもしれません。 – CallumDA

+0

より良いフォーミュラができるように、データと出力を入れてください。 – harun24hr

答えて

0

例があるので、これは良い質問だと思います。あなたはあなたの数式がかなり乱雑であることを認識しており、さらにルートがあれば容易に拡張することはできません。

問題は、Excelは単一の行または列の値を検索するのには非常に適していますが、データブロック内の値を検索するのには適していないという点です。

単一のセル内にルート全体を持つ列を追加することで、この問題を簡素化できます。値を連結するだけでこれを行うことができます。あなたの例では、列Hを使用してください:

=B2&" "&C2&" "&D2&" "&E2&" "&F2&" "&G2 

これは、単一のセル内にルート全体を含む文字列を作成します。経路の各部分の間にスペースを入れて、誤って別の経路の一部と一致する文字列を作成しないようにします。空白のセルがあるかどうかは関係ありません。最後に余分な空白がありますが、問題はありません。これを列に記入して、単一のセル内の各ルートのパス全体を取得します。

次に、完全なルートのいずれかに3文字を検索しようとする数式を作成できます。

=INDEX($A$2:$A$5,MATCH("*"&left(I2,3)&"*",$H$2:$H$5,0)) 

この数式は、基本的には解体されたvlookupです。これは、3つの文字が列Hで見つかる場所を決定し、列Aから対応する値を戻します。

MATCH関数は、列HのI2の左3文字を探します。MATCH関数は通常、完全一致(最後のパラメータは0に等しい)ですが、検索値にワイルドカードを追加することができます。 MATCH関数は、見つかった範囲のインデックスを返します。つまり、範囲H2:H5の2番目のセルで見つかった場合は、数値2を返します。

INDEX関数は、インデックスに基づいた範囲から値を取得します。この場合、範囲A2:A5から2番目の値が得られます。

enter image description here

関連する問題