Skip to content

Latest commit

 

History

History
96 lines (60 loc) · 2.97 KB

File metadata and controls

96 lines (60 loc) · 2.97 KB

从零开始的记账工具人

既然题目是用Excel分发的,那就直接用Excel解(

解题使用的Excel表格已经放在了本文件夹内的从零开始的记账工具人-convert.xlsx中。

Excel表格中每列的含义(Sheet1)

A-B

题目给出的金额(单位为大写)和数量。

G-K

用于拆分佰,拾,元,角,分前的大写数字。

以G列为例:

=IFERROR(MID($A2,FIND(G$1,$A2)-1,1),0)

函数 FIND 和 FINDB 用于在第二个文本串中定位第一个文本串,并返回第一个文本串的起始位置的值,该值从第二个文本串的第一个字符算起。

FIND函数用于寻找A列对应单元格(即A2)内“佰”字的位置,并输出其位置。

MID 返回文本字符串中从指定位置开始的特定数目的字符,该数目由用户指定。

MID函数用于读取“佰”字的位置的前一位的文字(即佰位的金额,此题中只有“零”和“壹”)

可以使用 IFERROR 函数捕获和处理公式中的错误。 如果公式的计算结果为错误值,则 IFERROR 返回您指定的值;否则,它将返回公式的结果。

IFERROR函数用于处理单元格金额没有佰位的情况,没有佰位时输出0。

对拾,元,角,分位的处理同上。

M-Q

用于将提取出的中文大写金额转换成数字。

以M列为例:

=VLOOKUP(G2,'LUT-UC'!$A$1:$B$12,2,0)

使用VLOOKUP函数,查找LUT-UC这个Sheet中对应的数字,并返回该数字。

LUT-UC中包含了中文大写金额和数字的对应关系:

0 0
0
1
2
3
4
5
6
7
8
9
0

其中“拾”位由于有形如“拾X”(10-20之间的数额)在“拾”字之前没有“壹”,所以需要特殊处理:

=VLOOKUP(H2,'LUT-UC'!$A$1:$B$12,2,0)+IFERROR(FIND("拾",A2,1)=1,0)

其中,处理10-20之间的数额时,“拾”位前没有字符,因此H列如果直接用给“佰”用的公式会返回0。因此N列公式的第二部分即是用于检查“拾”字是否是单元格的第一个字符。如果其为单元格的第一个字符,则返回1(给“拾”位的计数加1)。

S

=M2*100+N2*10+O2*1+P2*0.1+Q2*0.01

将解析出的每位数字相加。

T

=S2*B2

计算每行的金额之和。

W2

=SUM(T:T)

计算总金额。