Определение символа валюты формата

Джелмер работает с большим количеством финансовых данных, и информация в таблице может быть представлена ​​в валютах многих стран. Единственный способ отличить их друг от друга – это символ валюты, используемый при форматировании ячейки. Например, ячейка может быть отформатирована для использования символа валюты «EUR» или «SEK». Джелмер задается вопросом, есть ли в формуле способ определить символ валюты, используемый для форматирования данной ячейки.

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

Функция 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 = «Не числовое значение» Если IsNumeric (rCell) Then sThrowAway = «0123456789., () + -]» sTemp = rCell.Text sKeep = «» Для 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 = sKeepEnd Function

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

= GetCurrency (B7)

Это работает, потому что свойство .Text для ячейки возвращает отформатированную версию того, что находится в сотовый. Предполагая, что ячейка содержит числовое значение (это проверяется функцией), форматированный текст присваивается переменной sTemp. Затем каждый символ в этом тексте сравнивается с тем, что находится в строке sThrowAway. Если есть совпадение, то символ игнорируется, в противном случае он добавляется в переменную sKeep. Это то, что возвращает функция.

Также обратите внимание, что если вычисляемая ячейка не содержит числового значения, то возвращается сообщение об ошибке («Не числовое значение») .

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

Источник: frestage.ru

Бытовой вопрос