Фильтрация по валюте в Excel

3220
lorenzo-s

У меня такая ситуация в Microsoft Excel:

Данные

Ячейки форматируются с использованием «Формат ячеек» и установки валюты для каждой ячейки вручную. Таким образом, они не простые строки. Я бы суммировал фильтрацию по валюте. Это возможно? Как?

Благодарю.

1

1 ответ на вопрос

2
Raystafarian

VBA

Поскольку вы использовали опцию «format» для форматирования этих ячеек, форматирование не содержится в значении ячейки, поэтому нам нужно определить функцию в VBA. Поместите это ( источник ) в новый модуль:

Public Function sumFormats(rng As Range) As String Application.Volatile Dim cell As Range, dblDollar#, dblPound# dblDollar = 0: dblPound = 0 For Each cell In rng If Len(cell.Value) > 0 Then If Left(cell.Text, 1) = "$" Then dblDollar = dblDollar + cell.Value Else dblPound = dblPound + cell.Value End If End If Next cell sumFormats = "Sum of currency: $" & dblDollar & "; Sum of Pounds: " & ChrW(163) & dblPound End Function 

Затем используйте новую функцию =sumFormats(A1:A20)для любых клеток, которые вы хотите, и она даст вам суммы в 1 строке. Если вам нужны промежуточные итоги в разных строках, нам нужно изменить выходные данные функции.


Non-VBA

Если вы не хотите связываться с VBA, вам понадобится вспомогательный столбец рядом с вашими номерами. В этом столбце используйте функцию, =cell("format",A1)и она вернется ,2за £ и C2за $. Затем запустите =sumifфункцию для промежуточных итогов.

=sumif(helpcolumncell,"C2",currencycell)подводить за доллары, и заменить C2с ,2на фунты. Вы всегда можете скрыть вспомогательный столбец, если он вам не нравится. В этом случае мы предположим, что ваши данные находятся в столбце B, а вспомогательный - в столбце C.

A B C  Data Format $1 =cell("format",B2) = C2 £2 =cell("format",B3) = ,2  £3 =cell("format",B4) = ,2 $4 =cell("format",B5) = C2  sum dollar =sumif($C$2:$C$4,"C2",$B$2:$B$4) = 5  sum pound =sumif($C$2:$C$4,",2",$B$2:$B$4) = 5 

Затем вам нужно будет отформатировать эти ячейки суммирования, чтобы получить знак валюты, или добавить =concatenate("$"&sumif(...))функцию

Я попробовал оба метода. С VBA я всегда оказываюсь в блоке ELSE (фунт) для каждой ячейки. Используя не-VBA метод, `= cell (" format ", A1)` всегда возвращает `2` ... lorenzo-s 12 лет назад 0
Вы изменили диапазоны ячеек на ваши диапазоны, верно? А вы использовали определенные форматы валют? Они оба работают, когда я их использую, давайте выясним разницу Raystafarian 12 лет назад 0
Я использую € и HKD. lorenzo-s 12 лет назад 0
Я не знаю почему, но Excel ставит пустое место (ASCII 32) перед символом валюты. Значения ячеек - это что-то вроде `␢ € 341234.56`. Поэтому я использовал `Mid (cell.Text, 2, 1)` вместо `Left (cell.Text, 1)` в коде VBA, и я решил. Спасибо. lorenzo-s 12 лет назад 0
Рад, что вы поняли это! Raystafarian 12 лет назад 0

Похожие вопросы