Джелмер работает с большим количеством финансовых данных, а информация в таблице может быть представлена ​​в валютах многих стран. Единственный способ отличить их друг от друга — это символ валюты, используемый при форматировании ячейки. Например, ячейка может быть отформатирована для использования символа валюты «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.