用于确定数字中最后一位数的函数或VBA代码

时间:2015-12-14 04:06:59

标签: excel excel-vba vba

在Excel 2016中,我有多行包含列A中列出的不超过3个字符的数字。我正在尝试根据A列中每行中最右边的字符分配一个组号。一旦确定了数字,结果放在相应行的B列中。

示例:

If rightmost character of the number is: a 1 or 6 in cell A1, then in column B1 it's given a 1.
If A1 is a 2 or 7 then B1 is 2.
If A1 is a 3 or 8 then B1 is 3.
If A1 is a 4 or 9 then B1 is 4.
If A1 is a 0 or 5 then B1 is 5.

有关如何使用函数或VBA代码执行的任何建议都表示赞赏。

1 个答案:

答案 0 :(得分:0)

完全按照您的问题陈述:在B1中,您可以输入公式:

=IF(MOD(MOD(A1,10),5)=0,5,MOD(MOD(A1,10),5))

根据需要将其复制下来。

部分MOD(A1,10)拉出最后一位数字。你似乎想要这个mod 5的剩余部分 - 因此MOD中的外部(MOD(MOD(A1,10),5)。但是 - 如果mod为0,你想将其报告为5 - 因此整体IF

然而 - 更快捷的方法就是:

=IF(MOD(A1,5)=0,5,MOD(A1,5))

因为从字面上拉出第一个数字是多余的,因为5是10的除数。

最后,@ chrisneilsen给出了一个更优雅的公式:

=MOD(A1-1,5)+1

对于0以外的所有余数,-1内的MOD+1外部相互抵消,但是对于5的倍数(余数为0),-1 MOD内部将数字转换为1,余数为4,最终答案为4 + 1 = 5。