我有一个excel电子表格,其中包含文字和$ A的金额,但是在不同的行中。我想只将$ amount移动到相邻的列B.例如,列看起来像这样。
The Pool Apache
FRONTIS
$ 2,000
1
$ 3,000
1
所以我想将$ strong 仅移动到相邻列。
我很确定这可以通过一个公式来完成,并且已经阅读了许多类似的帖子,但是不能完全找出正确的公式。
答案 0 :(得分:2)
=if(isnumber(A1),A1,"")
这将只将数字拉到相邻列,这意味着$ 2000和1将会结束。因此假设模式是空白单元格,金额,整数空白单元格,我们可以将公式修改为:
=if(AND(isnumber(A2),A1=""),A2,"")
现在该公式必须进入单元格B2并被复制下来。它的局限在于第一个A1不能是钱。
现在,如果将钱存入字符串,生活可能会变得更容易一些。
=IF(left(A1,1)="$",A1,"")
该公式可以进入B1并被复制下来。这会将以$ over开头的所有字符串拉到相邻列。如果您需要将该字符串转换为一个数字,我们将更多的函数折叠到之前的公式中并结束:
=IF(left(A1,1)="$",SUBSTITUTE(SUBSTITUTE(A1,"$",""),",",""),"")
从午餐回来看到新信息后,我同意布鲁斯的声明并给出两个选择。第一个是基于A1中值的长度,第二个是基于20的断点。
=if(AND(isnumber(A1),len(A1)>2),A1,"")
OR
=if(AND(isnumber(A1),A1>20),A1,"")
OR
=if(AND(isnumber(A1),A1>=100),A1,"")
'I prefer this one as it is a direct check on your criteria for money being no less than $100
所有这些公式都可以放在B1中并复制下来。
答案 1 :(得分:2)
在我们确定使用公式检测哪些单元格是货币的方法之前,您可以使用此功能,如果VBA解决方案没问题。 (注意:放在工作簿模块中)
Function is_Currency(ByVal target As Range)
If VarType(target) = vbCurrency Then
is_Currency = target.Value
Else
is_Currency = ""
End If
End Function
编辑:根据@ForwardEd,您还可以创建此isCurrency()
UDF,并像isNumeric()
一样使用它:
Public Function isCurrency(ByVal Target as Range) as Boolean
If varType(Target) = vbCurrency Then isCurrency = TRUE
End Function
然后将其放入您的专栏B:=If(isCurrency(A1),A1,"")
。