式ベースのクエリから変換するように作成したVBAコードでは、いくつかのエラーが発生します。Excel式からVBAコードへのエラー
Cell.Offset(0, 37).Value = Application.WorksheetFunction.IfError(Application.WorksheetFunction.Index((Sheets("CP INFO").Range("N6:AK570")), Application.WorksheetFunction.Match(Cell.Offset(0, 36).Value, Sheets("CP INFO").Range("N6:AK570"), 0), 1), "No SFH")
エラーは、ワークシート関数クラスの 'Matchプロパティを取得できません。 上記のコードの元の式は - =IFERROR(INDEX('CP INFO'!$N$6:AK$570,MATCH(VALUE(AK4),'CP INFO'!$N$6:$N$570,0),1),"NO SFH")
です。だから間違っているのはわかりません。
次のコードは次のエラーです。
Cell.Offset(0, 39).Value = Application.WorksheetFunction.IfError(Left(Application.WorksheetFunction.IfError(Left(Right(Cell.Offset(0, 24), _
Len(Cell.Offset(0, 24)) - Application.WorksheetFunction.Find("(", Cell.Offset(0, 24))), (Len(Cell.Offset(0, 24)) - Application.WorksheetFunction.Find("-", Cell.Offset(0, 24))) + 1), ""), _
Application.WorksheetFunction.Find("-", Application.WorksheetFunction.IfError(Left(Right(Cell.Offset(0, 24), Len(Cell.Offset(0, 24)) - _
Application.WorksheetFunction.Find("(", Cell.Offset(0, 24))), (Len(Cell.Offset(0, 24)) - Application.WorksheetFunction.Find("-", Cell.Offset(0, 24))) + 1), "")) - 1), _
Application.WorksheetFunction.IfError(Left(Right(Cell.Offset(0, 24), Len(Cell.Offset(0, 24)) - _
Application.WorksheetFunction.Find("(", Cell.Offset(0, 24))), (Len(Cell.Offset(0, 24)) - Application.WorksheetFunction.Find("-", Cell.Offset(0, 24))) + 1), ""))
このエラーは、プロパティを見つけることができないというfind関数に関連しています。私はVBA内のこれらの機能については本当に初心者なので、何か間違ったことや何か不足していることは間違いありません。
オリジナルのコード式です。
=IFERROR(LEFT(IFERROR(LEFT(RIGHT(DATA2!Y4,LEN(DATA2!Y4)-FIND("(",DATA2!Y4)),(LEN(DATA2!Y4)-
FIND("-",DATA2!Y4))+1),""),FIND("-",IFERROR(LEFT(RIGHT(DATA2!Y4,LEN(DATA2!Y4)-
FIND("(",DATA2!Y4)),(LEN(DATA2!Y4)-FIND("-",DATA2!Y4))+1),""))-1),IFERROR
(LEFT(RIGHT(DATA2!Y4,LEN(DATA2!Y4)-FIND("(",DATA2!Y4)),(LEN(DATA2!Y4)-FIND("-",DATA2!Y4))+1),""))
このマクロの設計は、およそ3〜5k行のデータをループし、データを事前にソートしたレポートを作成することです。セルは現在の行で、列Aです。基準が満たされている場合、オフセットは対応する列に値をポストします。
誰かが助けてくれることを願っています。
よろしくあなたは、VBAでそのよう代わりに何かのようIfError()
を使用することはできません アラン
vbaコードでは「WorksheetFunction」を使用しないで、関数が実行するコードを記述することをお勧めします。あなたが関数の使用を主張するなら、 'worksheet()を見てください。Evaluate' –
ありがとう@ScottCraner前にEvaluateを使っていませんでした。私はこれを述べるコメントを見たことがありますが、これは使い方が遅いのですか? –
workheetformulaを使用するよりも遅くはありません。真のVBAに変換し、ワークシートを参照する代わりに配列を使用する方が早いでしょう。私はこの機会に、配列を使って正しいコードを書くことを学びます。 –