Reputation: 3
Ok, so all I want to do is create a function to optimize how I can segment my PivotTable data. This data comes in different forms like "245896321 - Name", "name" or "name23123" and I want it to return the persons full name if the cells contains specific texts (person last name), but it only returns #VALUE!
Thanks in advance! You're beautiful!
Also I apologize if my coding hurts your eyes just started my adventure into the coding world two days ago, if you want to suggest modifications feel free! :)
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
Upvotes: 0
Views: 49
Reputation: 166381
Application.WorksheetFunction.Search
will throw a runtime error if there's no match: try instead something like:
If Application.WorksheetFunction.IsNumber(Application.Search("*Ormelli*", Line)) Then
'...
Omitting the WorksheetFunction
switches the behavior from triggering a runtime error to instead returning an error value.
Or just use:
If Line Like "*Ormelli*" Then
'...
which I think is easier to follow.
Upvotes: 1