Формулы Excel для использования заглавных букв после точки - PullRequest
0 голосов
/ 14 мая 2018

Есть ли какая-нибудь формула, которую я могу использовать в Excel, чтобы использовать первую букву после точки?У меня есть несколько предложений в одной ячейке, и каждое предложение разделено точкой.Я попытался использовать PROPER FUNCTION, а также UPPER FUNCTION, но не получил желаемого результата.

1 Ответ

0 голосов
/ 14 мая 2018

Ниже формула может работать для вас:

=SUBSTITUTE(SUBSTITUTE(PROPER(SUBSTITUTE(SUBSTITUTE(LOWER(A1),". ","9z9")," ","zxz")),"9Z9",". "),"zxz"," ")

Это в основном SUBSTITUTE с периодами и пробелами с 3-мя символьными строками, чтобы обмануть код PROPER, как если бы каждое предложение состояло только из одного слова. А затем повторно SUBSTITUTE строки с периодами и пробелами.

Источник .

РЕДАКТИРОВАТЬ: После предупреждения @chronocidal я понял, что формула не может обрабатывать уже существующие заглавные буквы, так как она в основном строчная все в самом начале. Похоже, сейчас нам нужно решение с пользовательской формулой.

Когда указанный ниже код вводится в модуль в файле Excel. Мы сможем использовать пользовательскую формулу sCase для достижения того, что нам нужно. Кредиты идут на здесь для этого решения.

Public Function sCase(ByRef strIn As String) As String
Dim bArr() As Byte, i As Long, i2 As Long
If strIn = vbNullString Then Exit Function
Let bArr = strIn
Select Case bArr(0)
    Case 97 To 122
        bArr(0) = bArr(0) - 32
End Select
For i = 2 To UBound(bArr) Step 2
    Select Case bArr(i)
        Case 105
            If Not i = UBound(bArr) - 1 Then
                Select Case bArr(i + 2)
                    Case 32, 33, 39, 44, 46, 58, 59, 63, 148, 160
                        If bArr(i - 2) = 32 Then _
                            bArr(i) = bArr(i) - 32
                End Select
            ElseIf bArr(i - 2) = 32 Then _
                bArr(i) = bArr(i) - 32
            End If
        Case 33, 46, 58, 63
            For i2 = i + 2 To UBound(bArr) Step 2
                Select Case bArr(i2)
                    Case 97 To 122
                        bArr(i2) = bArr(i2) - 32
                        i = i2:   Exit For
                End Select
                Select Case bArr(i2)
                    Case 32, 33, 46, 63, 160
                    Case Else
                        i = i2:   Exit For
                End Select
            Next
    End Select
Next
sCase = bArr
End Function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...