Как сделать ПРАВИЛЬНЫЙ пропуск некоторых слов (Microsoft Excel)
Терри постоянно использует функцию ПРАВИЛЬНЫЙ рабочий лист, чтобы изменить регистр текста в своих таблицах. Он задается вопросом, есть ли способ указать функции игнорировать определенные слова, чтобы они не начинались с заглавной буквы. Для него нет ничего необычного в том, что он должен вернуться после использования 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 [Заставляем ПРОПИСАТЬ Пропуск определенных слов]
.