1

Ищем способ добиться следующего. Представь у меня 2 колонки

A    |   B
---------------
NAME |   SURNAME
---------------
Ned  | Stark
Arya | Stark
Sansa| Bolton

Я хотел бы, чтобы столбец C содержал следующее: «Следующим, кто умрет, будет ИМЯ Фамилия. Ура!"

так что для достижения этого я бы сделал формулу, как

=concatenate(The next to die will be,A2,' ',B2,'. Cheers!')

а затем опусти все мои ряды

но это тривиальный пример. иногда у меня может быть более 20 столбцов, и получающаяся строка является более сложной. Должен быть лучший способ сделать это? Я думаю, как эквивалент C # функции "Формат", например,

=Format('The next to die will be {0} {1}. Cheers!',A2,B2)

Какие-либо предложения?

2 ответа2

1

1-й вариант:

="The next to die will be "& A2 & ' '& B2 & ". Cheers!"

2-й вариант:

(для хардкорных пользователей)

Создайте свою собственную функцию:

Function myString(ParamArray Vals() As Variant)
    Separator1 = "{"
    Separator2 = "}"
    finalString = ""
    initialString = Vals(0)
    found = True
    firstpos = 1
    While found = True
        pos = InStr(firstpos, initialString, Separator1)
        If pos = 0 Then
            found = False
            endpartval = Mid(initialString, firstpos)
            finalString = finalString + endpartval
        Else
            stringParts = Mid(initialString, firstpos, pos - firstpos)
            pos1 = InStr(pos, initialString, Separator2)
            firstpos = pos1 + 1
            varNumber = Mid(initialString, pos + 1, pos1 - pos - 1)
            finalString = finalString + stringParts + Vals(varNumber + 1)
        End If
    Wend
    myString = finalString
End Function

Чтобы это работало, вы должны открыть VBA/Macros с помощью ALT+ F11, затем в ThisWorkbook вставить новый модуль и вставить код.

Теперь в любую клетку можно положить

=mystring("The next to die will be {0} {1}. Cheers!",A2,B2)

или что угодно. Имейте в виду, что сначала должна идти строка, а затем ссылки на ячейки.

Это действительно:

=mystring("The next to die will be {0}, {3} and {2}. Cheers!",A2,B2,B3)

Это не

=mystring(A2,"The next to die will be {0}, {3} and {2}. Cheers!",B2,B3)
0

В Excel такой функции нет, вы можете использовать SUBSTITUTE , но она все равно будет длинной:

=SUBSTITUTE(SUBSTITUTE("The next to die will be {1} {2}","{1}",A2),"{2}",B2)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .