2017-12-14 13 views
1

複数の列にわたってさまざまな条件を調べ、すべての条件がすべて一致すると、ある列から別の列にデータを貼り付けるかどうかを確認するこの式があります。私はVBAにそれを得るためのいくつかの方法を試しましたが、私は何か動作するように見えることはできません。ありがとう!excel-vbaへのExcel式

=IFERROR(INDEX(Sheet1!A$2:A$205,SMALL(IF(ISNUMBER(SEARCH("ECR Approval",Sheet1!$C$2:$C$205)),ROW(Sheet1!$A$2:$A$205)-ROW(Sheet1!$A$2)+1),ROWS(A$2:A2))),"") 
+1

"*何もできないようです" *あなたが想像できるような有用なエラーの説明はありません。すでに試したことを示してください。したがって、あなたの質問を編集し、あなたのVBAコードを追加して、あなたがどこにいらっしゃったのか、そしてどこにエラーがあるのか​​を教えてください。なぜそれをVBAに変換する必要があるのか​​説明しても役に立ちます。より多くの背景を知っていれば、より簡単な選択肢があるかもしれないので、私はこれを求めます。 –

+0

あなたは何をしようとしているのか、あなたが書いた式は現時点で何を説明することができますか?スプレッドシートにデータを表示して、設定方法を確認することもできます。 –

答えて

1

VBAで機能を使用するには、各機能Application.WorksheetFunction前に使用する必要があります。

x = Application.WorksheetFunction.Sum(y,z) 

は、あなたが一緒に物事にこれを入れて怒りに

x = Application.WorksheetFunction.Sum(Range("A1:A2")) 

を使用することができますVBAでシートのセルを参照するには、それは次のようになります。これは、配列がある

=Application.WorksheetFunction.IFERROR(Application.WorksheetFunction.Index(Worksheet(1).Range("A2:A205"),Application.WorksheetFunction.SMALL(Application.WorksheetFunction.IF(Application.WorksheetFunction.ISNUMBER(.... 
3

次のコードを使用して、この式をシートに配置できます。

Dim ws As Worksheet 
Set ws = Sheets("Sheet2") 'Sheet where formula would be placed 
ws.Range("A2").FormulaArray = "=IFERROR(INDEX(Sheet1!A$2:A$205,SMALL(IF(ISNUMBER(SEARCH(""ECR Approval"",Sheet1!$C$2:$C$205)),ROW(Sheet1!$A$2:$A$205)-ROW(Sheet1!$A$2)+1),ROWS(A$2:A2))),"""")" 
ws.Range("A2").AutoFill ws.Range("A2:A205"), xlFillDefault