2016-10-10 3 views
0

だから、私がしたいのは、ピボットテーブルデータの分割方法を最適化するための関数を作成することだけです。このデータは "245896321 - 名前"、 "名前"または "名前23123"のような異なる形式で表示され、セルに特定のテキスト(人の姓)が含まれている場合は人名を返すようにしたいが、#VALUEだけ返す!Elseifが返すのは#VALUE

ありがとうございます!あなたは美しいです!

また、私のコーディングがあなたの目を傷つけていて、2日前にコーディングの世界に冒険を始めたのであれば、謝罪します。 :)

Function Financeiro (Line) as String 

    '=IF(ISNUMBER(SEARCH("*Person*", Line)), "Person Name") 

If Application.WorksheetFunction.IsNumber(Application.WorksheetFunction.Search("*Ormelli*", Line)) Then 

Financeiro = "Fernando Ormelli" 

ElseIf Application.WorksheetFunction.IsNumber(Application.WorksheetFunction.Search("*Fortuna*", Line)) Then 

Financeiro = "Ricardo Fortuna" 

ElseIf Application.WorksheetFunction.IsNumber(Application.WorksheetFunction.Search("*Manocchio*", Line)) Then 

Financeiro = "Ricardo Manocchio" 

ElseIf Application.WorksheetFunction.IsNumber(Application.WorksheetFunction.Search("*Stanquini*", Line)) Then 

Financeiro = "Helder Stanquini" 

ElseIf Application.WorksheetFunction.IsNumber(Application.WorksheetFunction.Search("*Ivanete*", Line)) Then 

Financeiro = "Ivanete Leite" 

ElseIf Application.WorksheetFunction.IsNumber(Application.WorksheetFunction.Search("*Freitas*", Line)) Then 

Financeiro = "João Freitas" 

ElseIf Application.WorksheetFunction.IsNumber(Application.WorksheetFunction.Search("*Khan*", Line)) Then 

Financeiro = "Marcelo Khan" 

ElseIf Application.WorksheetFunction.IsNumber(Application.WorksheetFunction.Search("*Filho*", Line)) Then 

Financeiro = "Marco Filho" 

ElseIf Application.WorksheetFunction.IsNumber(Application.WorksheetFunction.Search("*Rocha*", Line)) Then 

Financeiro = "Natalia Rocha" 

ElseIf Application.WorksheetFunction.IsNumber(Application.WorksheetFunction.Search("*Carvalho*", Line)) Then 

Financeiro = "Vinicius Carvalho" 

ElseIf Application.WorksheetFunction.IsNumber(Application.WorksheetFunction.Search("*SAE*", Line)) Then 

Financeiro = "SAE" 

ElseIf Application.WorksheetFunction.IsNumber(Application.WorksheetFunction.Search("*Raphael*", Line)) Then 

Financeiro = "Raphael Vieira" 

Else 

Financeiro = "Manual" 

End If 

End Function 
+0

'Financeiro = Manual':' Manual'は他の場所で定義された変数ですか、それとも引用符を追加するのを忘れましたか? –

+0

私は引用符を追加するのを忘れましたが、エラーは依然として続きます。しかし、ティム同様、ありがとう! –

+0

ワークシートのセルから関数を呼び出す代わりに、小さなSubを作成してそこから呼び出すと、エラーの位置がわかります。 'Sub Tester():Debug.Print Financeiro(" blah "):End Sub' –

答えて

1

Application.WorksheetFunction.Searchが一致がない場合は、ランタイムエラーがスローされます。

If Application.WorksheetFunction.IsNumber(Application.Search("*Ormelli*", Line)) Then 
'... 

WorksheetFunctionを省略する代わりに、エラー値を返すために、実行時エラーをトリガから行動を切り替え:代わりのようなものを試してみてください。

それとも使用:

私は従うことが容易であると考え
If Line Like "*Ormelli*" Then 
'... 

関連する問題