Определение символа валюты формата (Microsoft Excel)
Джелмер работает с большим количеством финансовых данных, а информация в таблице может быть представлена в валютах многих стран. Единственный способ отличить их друг от друга — это символ валюты, используемый при форматировании ячейки. Например, ячейка может быть отформатирована для использования символа валюты «EUR» или «SEK». Джелмер задается вопросом, есть ли способ в формуле определить символ валюты, используемый для форматирования данной ячейки.
В Excel нет встроенной функции рабочего листа, которая возвращала бы то, что вы ищете, поэтому это невозможно сделать в формуле. Однако вы можете создать свою собственную определяемую пользователем функцию, которая будет возвращать желаемую информацию. Вот пример:
Function GetCurrency(rCell As Range) As String Dim sTemp As String Dim sKeep As String Dim sThrowAway As String Dim J As Integer Application.Volatile sKeep = "Not a Numeric Value" If IsNumeric(rCell) Then sThrowAway = "0123456789.,()+- ]" sTemp = rCell.Text sKeep = "" For J = 1 To Len(sTemp) If InStr(sThrowAway, Mid(sTemp, J, 1)) = 0 Then sKeep = sKeep & Mid(sTemp, J, 1) End If Next J End If GetCurrency = sKeep End Function
Чтобы использовать функцию, вы должны использовать следующее, предполагая, что вам нужен символ валюты для того, что находится в ячейке B7:
=GetCurrency(B7)
Это работает, потому что свойство .Text для ячейки возвращает отформатированную версию всего, что находится в ячейке. Предполагая, что ячейка содержит числовое значение (функция проверяет это), форматированный текст присваивается переменной sTemp. Затем каждый символ в этом тексте сравнивается с тем, что находится в строке sThrowAway. Если есть совпадение, то символ игнорируется, в противном случае он добавляется в переменную sKeep.
Это то, что возвращает функция.
Также обратите внимание, что если оцениваемая ячейка не содержит числового значения, то возвращается сообщение об ошибке («Не числовое значение»).
Есть одна проблема, о которой нужно знать с функцией: если вы измените форматирование целевой ячейки, это не вызовет макрос. Это кажется недостатком самого Excel — он не запускает пересчет рабочего листа при изменении формата, поэтому сам макрос не запускается.
Однако он сработает в следующий раз, когда вы внесете в рабочий лист изменение, требующее пересчета.
_Примечание: _
Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.
link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
ExcelTips — ваш источник экономичного обучения Microsoft Excel.
Этот совет (13787) применим к Microsoft Excel 2007, 2010, 2013, 2016, 2019 и Excel в Office 365.