我在 Microsoft Excel 中遇到了这种情况:
单元格的格式是使用“设置单元格格式”并为每个单元格手动设置货币。因此,它们不是简单的字符串。我想按货币进行过滤。这可能吗?怎么做?
谢谢。
答案1
虚拟专用网络
由于您使用了“格式”选项来格式化这些单元格,因此格式不包含在单元格的值中,因此我们需要在 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)
,它将在一行上给出总数。如果您需要在不同行上进行小计,我们需要修改函数的输出。
非 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
然后,您需要格式化这些 sumif 单元格以获取货币符号,或添加=concatenate("$"&sumif(...))
函数