EXCEL\u如何将文本转换为数字

EXCEL\u如何将文本转换为数字,excel,excel-formula,worksheet-function,vba,Excel,Excel Formula,Worksheet Function,Vba,我正在编写一份质量报告,并已将数据导入到工作表中。但数字都保留为文本,在一列中的单独单元格中 | Average colour | red | red | weight | 1.6 | 1.56 | 1.58 length | 1.1 | 1.12 | 1.11 type | A | A | A colour | green | green | weight | 1.4 | 1.5 |

我正在编写一份质量报告,并已将数据导入到工作表中。但数字都保留为文本,在一列中的单独单元格中

                        | Average
colour | red   | red    | 
weight | 1.6   | 1.56   | 1.58
length | 1.1   | 1.12   | 1.11
type   | A     | A      | A
colour | green | green  | 
weight | 1.4   | 1.5    | 1.45
length | 10    | 9.6    | 9.8
type   | B     | B      
我想计算一下他们一行的平均值。你可以把
color
type
放在一边,我用
IF
函数来判断测试是否是这两个,然后我会用结果做其他事情,如果测试不是(这意味着结果应该是一个数字),我想计算平均值


但是由于这个问题,我将遇到
DIV/0
错误。很抱歉,我没有在VBA中找到任何公式或代码来完成此任务,因此如果您有什么想法,请留下评论,谢谢。

假设您的数组A1:A10混合了文本和数字存储为文本。可以按如下方式取数值的平均值:

=AVERAGE(IFERROR(VALUE(A1:A10),""))
这是一个数组公式,因此需要使用Ctrl+Shift+Enter输入

重要提示:这将把空白单元格视为零!如果您想忽略空白,可以为此添加处理

=AVERAGE(IFERROR(IF(ISBLANK(A1:A10),"",VALUE(A1:A10)),""))
编辑:在您的示例中,您可能希望对特定行求平均值。在这种情况下,查看
AVERAGEIF
函数


我也不知道你的数据是在一列还是两列。如果在一个数组中,则首先需要使用文本到列,并以“|”作为分隔符将其拆分为两个。

假设数组A1:A10混合了文本和以文本形式存储的数字。可以按如下方式取数值的平均值:

=AVERAGE(IFERROR(VALUE(A1:A10),""))
这是一个数组公式,因此需要使用Ctrl+Shift+Enter输入

重要提示:这将把空白单元格视为零!如果您想忽略空白,可以为此添加处理

=AVERAGE(IFERROR(IF(ISBLANK(A1:A10),"",VALUE(A1:A10)),""))
编辑:在您的示例中,您可能希望对特定行求平均值。在这种情况下,查看
AVERAGEIF
函数


我也不知道你的数据是在一列还是两列。如果是一个,您首先需要使用文本到列,并以“|”作为分隔符,将其拆分为两个。

跟进Alexis Olson关于如何计算数字平均值的评论。如果这只是样本数据,而您的真实数据是文本和数字的组合,请坚持亚历克西斯·奥尔森的答案

但是,如果您确实希望仅平均重量,因为平均重量和长度从单位角度看没有意义,您可能希望尝试:

=SUMPRODUCT(($B$4:$B$11=E$4)*IFERROR(VALUE($C$4:$C$11),0))/COUNTIF($B$4:$B$11,E$4)

AVERAGEIF不太有效,因为第三个参数要求的是平均值的范围,我们错过了将文本数字转换为实际数字的机会

以上两个公式都是CSE或数组公式,这意味着您需要在完成公式输入时使用CONTROL+SHIFT+ENTER。完成后,右{}括号将出现在公式栏中的公式周围。请注意,不能为整个公式手动添加{}

概念证明


更新# 示例数据更改后

=AVERAGE(VALUE(C9:D9))
这是一个单单元格数组公式。将其放置在需要平均值的第一个单元格中,确保在输入公式时使用CONTROL+SHIFT+ENTER,并在输入公式后查找公式周围的{},然后可以向下拖动公式或将其复制到所需的各个单元格中

概念二的证明


跟进亚历克西斯·奥尔森关于你如何平均你的数字的评论。如果这只是样本数据,而您的真实数据是文本和数字的组合,请坚持亚历克西斯·奥尔森的答案

但是,如果您确实希望仅平均重量,因为平均重量和长度从单位角度看没有意义,您可能希望尝试:

=SUMPRODUCT(($B$4:$B$11=E$4)*IFERROR(VALUE($C$4:$C$11),0))/COUNTIF($B$4:$B$11,E$4)

AVERAGEIF不太有效,因为第三个参数要求的是平均值的范围,我们错过了将文本数字转换为实际数字的机会

以上两个公式都是CSE或数组公式,这意味着您需要在完成公式输入时使用CONTROL+SHIFT+ENTER。完成后,右{}括号将出现在公式栏中的公式周围。请注意,不能为整个公式手动添加{}

概念证明


更新# 示例数据更改后

=AVERAGE(VALUE(C9:D9))
这是一个单单元格数组公式。将其放置在需要平均值的第一个单元格中,确保在输入公式时使用CONTROL+SHIFT+ENTER,并在输入公式后查找公式周围的{},然后可以向下拖动公式或将其复制到所需的各个单元格中

概念二的证明

我正在寻找将它们转换成数字,然后进行计算的方法

为了避免数组公式的缺点,以非数组形式使用@Alexis Olson或@Forward Ed的解决方案要简单得多,但是在选择包含绿色三角形的范围并单击左上角绿色三角形中的“Convert To number”(转换为数字)之后

如果未显示绿色三角形,请启用错误检查(选项>公式)或在备用单元格中插入
0
,复制该单元格,选择要适合的范围并粘贴特殊,然后添加

我正在寻找将它们转换成数字,然后进行计算的方法

为了避免数组公式的缺点,以非数组形式使用@Alexis Olson或@Forward Ed的解决方案要简单得多,但是在选择包含绿色三角形的范围并单击左上角绿色三角形中的“Convert To number”(转换为数字)之后


如果未显示绿色三角形,请启用错误检查(选项>公式)或在备用单元格中插入
0
,复制该单元格,选择要适应的范围并粘贴特殊值,添加。

是否尝试将excel工作表中单元格的格式从文本更改为数字?您可以使用
CInt
转换存储为字符串的数字,但如果存在字符串,则还需要一些错误