Терри постоянно использует функцию ПРАВИЛЬНЫЙ рабочий лист, чтобы изменить регистр текста в своих таблицах. Он задается вопросом, есть ли способ указать функции игнорировать определенные слова, чтобы они не начинались с заглавной буквы. Для него нет ничего необычного в том, что он должен вернуться после использования 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 = (LBound(vaArray)+1) 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 = LBound(vaArray) To UBound(vaArray)

str = str & " " & vaArray(i)

Next i

Title = Trim(str)

End Function

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

=Title(A1)

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

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

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

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

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

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

Этот совет (10560) применим к Microsoft Excel 2007, 2010, 2013, 2016, 2019 и Excel в Office 365. Вы можете найти версию этого совета для старого интерфейса меню Excel здесь:

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