为ODD编写IF语句

时间:2016-10-24 10:10:31

标签: excel excel-formula

我想弄清楚如何写一个IF语句,比如这个

 IF (value in column A is ODD, then do this)
 IF (value in column A is EVEN, then do this)

单元格中包含字母和数字(即单元格在列中具有以下格式:A1,A2,A3等)。这是我目前的公式:

=IF(EVEN(A13)=A13, I13, L13),

但是,我无法以某种方式操纵它,以至于它省略了单元格中的字母,只是查看数字。任何建议将不胜感激!

3 个答案:

答案 0 :(得分:1)

要测试数字的均匀度,只需对该数字的最后一位数字进行测试就足够了。

因此,如果数字只出现在字符串的末尾,那么:

=ISEVEN(RIGHT(A1))

此致

答案 1 :(得分:0)

这是一个可以工作的数组公式,但我认为有一种更简单的方法。您需要按ctrl + shft + enter

=IF(ISEVEN(VALUE(MID(A1,MIN(IFERROR(FIND({0,1,2,3,4,5,6,7,8,9},A1),"")),
LEN(A1)-MIN(IFERROR(FIND({0,1,2,3,4,5,6,7,8,9},A1),""))+1))),I1,L1)

这是非阵列版本。只需按enter

即可
=IF(ISEVEN(VALUE(MID(A1,MIN(FIND({0;1;2;3;4;5;6;7;8;9},A1&
{0;1;2;3;4;5;6;7;8;9})),LEN(A1)-MIN(FIND({0;1;2;3;4;5;6;7;8;9},
A1&{0;1;2;3;4;5;6;7;8;9}))+1))),I1,L1)

答案 2 :(得分:0)

这是一个用于从字符串中提取数字的vba函数:

Public Function numer(val As Variant) As Double
Dim collector As String
Dim i As Long

For i = 1 To Len(val)
    If IsNumeric(Mid(val, i, 1)) Or Mid(val, i, 1) = "," Then: _
    collector = collector + Mid(val, i, 1)
Next i

numer = CDbl(collector)

结束功能

您可以在新模块上添加它,然后根据需要在公式中使用它(如正常的Excel功能,请参见屏幕截图中的下方)。

Result

有关如何执行此操作的更多信息(在公式中使用vba函数),请查看此处: https://support.office.com/en-us/article/Create-Custom-Functions-in-Excel-2007-2f06c10b-3622-40d6-a1b2-b6748ae8231f

如果您需要在数字中包含小数位数的昏迷,则必须在该函数中更改一点if语句以接受逗号。

编辑:我已经改进了接受十进制数字的函数(使用逗号),并且我已经为您创建了一个更复杂的示例,其中显示了如何将该函数与结果一起使用(在列中)我的屏幕截图中的B)以及如何在带有IF的公式中使用它。