Нужна помощь в создании пользовательской функции в Excel с VBA - PullRequest
0 голосов
/ 08 апреля 2011

Я застрял при создании пользовательской функции в Excel VBA для решения следующей проблемы.Любая помощь будет принята с благодарностью.

Мой файл Excel выглядит следующим образом (для краткости добавляется лишь небольшая часть):

       A          B          C          D
1     Susan     Reagan     Smith         
2     Jill        L        Taylor
3     Sarah     Sullivan   Williams
4     Roger       J        Lopez

Мне нужна функция, которая определяет:A1 = Сьюзен ИЛИ Джилл ИЛИ Сара и LEN (длина строки) B1> 1, ТО D1 = A1 / 2 B1 C1 ИЛИ A1 / 2 C1

Таким образом, вывод в столбце D будет выглядеть следующим образом:

       A          B          C          D
1     Susan     Reagan     Smith      Susan /2 Reagan Smith      
2     Jill        L        Taylor     Jill /2 Taylor
3     Sarah     Sullivan   Williams   Sarah /2 Sullivan Williams 
4     Roger       J        Lopez      Roger /2 Lopez

Я хочу использовать VBA, потому что мне нужно добавить много имен, и я действительно не хочу огромной формулы в ячейке D1 с большим количеством вложенных операторов if.Я работал над этим сам, но это просто беспорядок, и я слишком смущен, чтобы размещать это здесь.Спасибо, ребята!

Ответы [ 2 ]

3 голосов
/ 08 апреля 2011
Public Function JoinNames(A, B, C)
    If FirstNameMatches(A) And Len(B) > 1 Then
        JoinNames = A & " /2 " & B & " " & C
    Else
        JoinNames = A & " /2 " & C
    End If
End Function

Private Function FirstNameMatches(N) As Boolean
    Select Case N
        Case "Susan", "Jill", "Sarah"
            FirstNameMatches = True
    End Select
End Function
0 голосов
/ 08 апреля 2011

Иметь список имен где-нибудь еще на листе.

Используйте IF(ISNA(MATCH(A1, list_of_names, 0)), "Not found", "Found"), чтобы выяснить, распознано ли имя.

...