在excel

时间:2016-05-13 15:52:55

标签: excel excel-formula

我有一个excel电子表格,其中包含文字和$ A的金额,但是在不同的行中。我想只将$ amount移动到相邻的列B.例如,列看起来像这样。

The Pool Apache
FRONTIS

$ 2,000
1

怀特河 XIV

$ 3,000
1

所以我想将$ strong 移动到相邻列。

我很确定这可以通过一个公式来完成,并且已经阅读了许多类似的帖子,但是不能完全找出正确的公式。

2 个答案:

答案 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,"")