今日设置了一个凭证,需要将数字按位置拆分好,然后打印到指定位置,经过取舍借鉴之后,成功了,小白将经验写的这里备查。
首先确认你的数字的最长位数,一般都是固定的长度的,比如到亿位(11位长度),千万位(10位长度),这将影响到公式的书写,如我的例子中就使用了长度为千万位即10位的写法。
假设C14单元格里填写数字:12345678.12
因为金额在填写到栏内时是不计算小数点位数的,所以公式内将此数X100,换算为无小数点的整数,即12345678.12 变为 1234567812, 3067 变为 306700,这样就避免了有小数点时使用len()函数时小数点占一位的问题。
另外 COLUMN() 函数,是取得列的位置,因为 A为1,B为2,所以我10位数字的公式内就使用了COLUMN(J1) 代表了 10位数字,同时拖拉公式时,J1 参数会按递增或者递减,方便填充。
好了,开始分析:
我们取数是从右向左取数,先取分,再取角,再取元,一直取到最后一位,取分时,即取右边第一位,取角时,取右边第二位……所以right() 配合left() 函数,分别取得所需数字。
如果当前位置大于了字符串的总长度,就取空值;
"¥"&14*100 是我们改造后的新字符串,前面加¥,然后去掉了小数点。
所以取“分”位数字的公式就是:
=IF((11-COLUMN(J1))<=LEN("¥"&$C$14*100)),开始取数,"")
“分”位,我们先从右边取1位,然后取左边的第1位,“角”位,从右边取2位,再取左边的第一次,依次递增,分别取分角元十百……位的数字了。
最后的公式就是:
=IF((11-COLUMN(J1))<=LEN("¥"&$C$14*100),LEFT(RIGHT("¥"&$C$14*100,11-COLUMN(J1))),"")
把它粘贴进"分"位的单元格内,向左拖拉10个单元格就好了。
把 $A$1 换成你填写数字的单元格,J1代表10,A1代表1 B1代表2……,换成自己的最大数字总位数就行了。
(小白言论,不知道能不能看懂罢了。)