在Excel中只将数字从一列移动到相邻列

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

池Apache
FRONTIS

$ 2,000个
1

白河
十四

$ 3000名
1

所以我想将$金额移动到相邻的列。

我很确定这可以通过一个公式完成,并阅读了一些类似的post,但不能完全计算出正确的公式。

 =if(isnumber(A1),A1,"") 

那只会把数字拉到相邻的列,这意味着$ 2000和1会过来。 所以假设模式是空白单元格,金额,整数空白单元格我们可以修改公式为:

 =if(AND(isnumber(A2),A1=""),A2,"") 

现在公式必须进入单元格B2并被复制下来。 它的局限性是第一个A1不能是钱。

现在,如果将钱存储为一个string,生活可能会变得更容易。

 =IF(left(A1,1)="$",A1,"") 

这个公式可以在B1中被拷贝下来。 这会将所有以$开头的string拉到相邻列。 而锦上添花的是,如果你需要把这个string变成一个数字,我们可以把一些function抛到前面的公式中,然后结束:

 =IF(left(A1,1)="$",SUBSTITUTE(SUBSTITUTE(A1,"$",""),",",""),"") 

UPDATE

午餐回来后,看到新的信息,我同意布鲁斯的声明,并会给出两个选项。 第一个是基于A1的值的长度,第二个是在20的断点。

 =if(AND(isnumber(A1),len(A1)>2),A1,"") 

要么

 =if(AND(isnumber(A1),A1>20),A1,"") 

要么

 =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中,然后复制下来。

直到我们可以确定一种方法来检测哪些单元格是货币或不是一个公式,你可以使用你可以使用这个函数,如果一个VBA解决scheme是好的。 (注意:放置在工作簿模块中)

 Function is_Currency(ByVal target As Range) If VarType(target) = vbCurrency Then is_Currency = target.Value Else is_Currency = "" End If End Function 

编辑:Per @ ForwardEd,你也可以创build这个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,"")