Терри постоянно использует функцию ПРАВИЛЬНЫЙ рабочий лист, чтобы изменить регистр текста в своих таблицах. Он задается вопросом, есть ли способ указать функции игнорировать определенные слова, чтобы они не начинались с заглавной буквы. Для него нет ничего необычного в том, что он должен вернуться после использования PROPER и заменить такие слова, как «the» или «an», на все строчные буквы. Если бы PROPER мог автоматически пропускать замену таких слов, это было бы большим подспорьем.

Один из способов приблизиться к этому — использовать функцию рабочего листа ЗАМЕНА в сочетании с функцией ПРОПИСАН. Например, если вы хотите найти экземпляры слова «The» с «the», вы можете использовать следующее:

=SUBSTITUTE(PROPER(A1)," The "," the ")

Обратите внимание на наличие пробела до и после того, что вы ищете и что вы заменяете. Это гарантирует, что изменяются только полные слова. Он также гарантирует, что в начале значения ячейки или в конце не будет сделано никаких изменений.

Если вы хотите найти другие слова, которые требовали замены, вы можете просто увеличить количество экземпляров ЗАМЕНА в формуле:

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(PROPER(A1)," The ", " the ")," An "," an ")," And "," and ")

Очевидно, это может стать немного неудобным, если у вас есть много слов, которые вы хотите исключить из изменения. В этом случае вам придется прибегнуть к использованию макроса. Следующий макрос, написанный как определяемая пользователем функция, может использоваться для преобразования всех слов в ячейке в начальные заглавные буквы (точно так же, как PROPER), но убедитесь, что определенные определенные слова написаны в нижнем регистре.

Function Title(ByVal ref As Range) As String     Dim vaArray As Variant     Dim c As String     Dim i As Integer     Dim J As Integer     Dim vaLCase As Variant     Dim str As String

' Array contains terms that should be lower case     vaLCase = Array("a", "an", "and", "in", "is", _       "of", "or", "the", "to", "with")



c = StrConv(ref, 3)

'split the words into an array     vaArray = Split(c, " ")

For i = 2 To UBound(vaArray)

For J = LBound(vaLCase) To UBound(vaLCase)

' compare each word in the cell against the             ' list of words to remain lowercase. If the             ' Upper versions match then replace the             ' cell word with the lowercase version.

If UCase(vaArray(i)) = UCase(vaLCase(J)) Then                 vaArray(i) = vaLCase(J)

End If         Next J     Next i

' rebuild the sentence     str = ""

For i = 1 To UBound(vaArray)

str = str & " " & vaArray(i)

Next i

Title = Trim(str)

End Function

Чтобы использовать макрос, все, что вам нужно сделать, это использовать на листе следующее:

=Title(A1)

Если вы получаете сообщение об ошибке при попытке запустить этот макрос, скорее всего, вы используете Excel 97. Функция разделения не добавлялась до Excel 2000, поэтому пользователи Excel 97 получат ошибку. Если да, то добавьте следующий макрос, который имитирует то, что делает функция Split.

Function Split(Raw As String, Delim As String) As Variant     Dim vAry() As String     Dim sTemp As String     Dim J As Integer     Dim Indx As Integer

Indx = 0     sTemp = Raw     J = InStr(sTemp, Delim)

While J > 0         Indx = Indx + 1         ReDim Preserve vAry(1 To Indx)

vAry(Indx) = Trim(Left(sTemp, J))

sTemp = Trim(Mid(sTemp, J, Len(sTemp)))

J = InStr(sTemp, Delim)

Wend     Indx = Indx + 1     ReDim Preserve vAry(1 To Indx)

vAry(Indx) = Trim(sTemp)

Split = vAry()

End Function

Вы также можете найти дополнительный подход к выполнению желаемой конверсии на этом сайте:

http://dmcritchie.mvps.org/excel/proper.htm

_Примечание: _

Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.

link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (10559) применим к Microsoft Excel 97, 2000, 2002 и 2003.

Вы можете найти версию этого совета для ленточного интерфейса Excel (Excel 2007 и новее) здесь:

link: / excelribbon-Making_PROPER_Skip_Certain_Words [Заставляем ПРОПИСАТЬ Пропуск определенных слов].