2016-07-01 1 views
-1

複数の「コールタイプ」(「ローミング」から「インターナショナル」まで)があり、タイプに応じて正しいレートを適用するにはvlookupが必要です。マクロを凌ぐ解決済み:Ifステートメントまたはケース内の複数のオプションのExcelマクロのベストプラクティス

これを行うにはどうすればよいですか?

リストB 場合はカテゴリタイプは、= "ローミング" と国

次に、リストA に

をcoaintedた場合、私は、配列を使用していますか? IF文の文字列が配列内にあるかどうかを確認するにはどうすればよいですか?

EDIT

は解決:私はケースを使用して、新しいカテゴリーを割り当てるには、サブケース付属:

Select Case otype 
Case "International" 
    Select Case country 
    Case "Australia", "China", "Singapore" 
    ActiveCell.Offset(0, 68).Value = "R01" 
    Case Else 
    ActiveCell.Offset(0, 68).Value = "R02" 
    End Select 
End Select 
+0

結合されたセルを使用して/私たちの仕事の10倍がより困難になります。 –

+0

私はそれについても考えました。あなたはAの中のマージされた細胞を取り除き、それを繰り返すべきですか? (A2とA3の両方が「国際」に)? – Stacker

+0

はい - ColAを完全に解除します –

答えて

1

あなたは、次の式(配列数式、のようなものを使用そのため、Ctrl + Shiftキーを使用することができます+

=MAX((B4:B7=B10)*(IF(ISERROR(SEARCH(B11,C4:C7)),0,1))*D4:D7) 

1つの問題は、あなたが探している国は他の国のストリングであることを起こる場合は、偽の結果を得ることである)を適用します。唯一の解決策は、すべての国名を|France|Canada|UK|のように置き、検索国入力の周りにパイプを追加することです。

enter image description here

+0

Hey Tim、それは素晴らしく(以前はMAXを使用していませんでした)、あなたが提供した小さなサンプルを試してみました。しかし、大きなセットでそれを使用すると、うまくいかなかった。 また、マクロVBAコードを実行するのが理想的です。 – Stacker

0

また別のオプションがあるかもしれません。このような計算を処理するときに、複数の値を1つのフィールドに入れることを避けようとします。代わりに、私は、データベースのように扱うしよう:

enter image description here

+0

これは「正しい」方法です。 –

+0

提案してくれてありがとう、残念なことに、3つのカテゴリの中にあまりにも多くの国があり、それらのすべてをリストにすることができるように交換し、私の運を試してみて、私のひどい試行/マクロを試みます:) – Stacker

関連する問題