在一些沒有應(yīng)用財(cái)務(wù)軟件的小微企業(yè)中,經(jīng)常需要利用Excel制作財(cái)務(wù)憑證,以便于財(cái)務(wù)核算。 其中,收款憑證中的金額大寫需要分列填寫在與貨幣單位對(duì)應(yīng)的單元格中,同時(shí)還需要在實(shí)際金額前的空白位置加上
E6單元格輸入以下公式: =IFERROR(NUMBERSTRING(LEFT(RIGHT(' '&$W$6*100,9-(COLUMN(A1)-1)/2)),2),'U') 單擊E6復(fù)制公式,按住Ctrl不放,依次點(diǎn)擊G6、I6、K6、M6……U6單元格,按Ctrl+V粘貼。 公式看起來比較復(fù)雜,咱們一點(diǎn)一點(diǎn)的拆解: $W$6*100部分 表示將W6單元格的數(shù)值800放大100倍,轉(zhuǎn)換為整數(shù)。再將空格“ ”與其連接,變成新的字符串“ 80000”。 使用RIGHT函數(shù)在“ 80000”這個(gè)字符串的右側(cè)開始取值,長度為: 9-(COLUMN(A1)-1)/2部分的計(jì)算結(jié)果。 9-(COLUMN(A1)-1)/2用于生成序列值,計(jì)算結(jié)果為9。 在公式復(fù)制到右側(cè)單元格時(shí),每間隔一列,序列值依次遞減,9 8 7 ……2 1。 即每向右一列,RIGHT函數(shù)的取值長度減少1。 如果RIGHT函數(shù)指定要截取的字符數(shù)超過字符串總長度,結(jié)果仍為原字符串。RIGHT(' 80000',9)的結(jié)果仍然為“ 80000”,最后使用LEFT函數(shù)取得首字符,結(jié)果為空格。 再以M6單元格中的公式為例: 其中,' '&$W$6*100部分結(jié)果仍為“ 80000”,但9-(COLUMN(I1)-1)/2部分的計(jì)算結(jié)果變?yōu)?,因此RIGHT(' 80000',5)只取出右邊的5個(gè)字符“80000”,最后通過LEFT函數(shù)取得首字符“8”。 其它單元格中的公式計(jì)算過程以此類推,不再贅述。 RIGHT函數(shù)中的字符串“ ”前面多加入一個(gè)半角空格,目的在于將未涉及金額的部分置為空格,使其在表格中顯示為空白。 NUMBERSTRING函數(shù)是一個(gè)隱藏函數(shù),可以方便的實(shí)現(xiàn)小寫數(shù)字到中文大寫數(shù)字的轉(zhuǎn)化。 對(duì)于LEFT函數(shù)返回的空格,NUMBERSTRING函數(shù)的結(jié)果是#VALUE!,最后再用IFERROR函數(shù)將錯(cuò)誤值轉(zhuǎn)換為字母“U”。 為什么要轉(zhuǎn)換為“U”呢?其實(shí)這是“曲線救國”策略, 想要模仿手工填寫效果,沒有數(shù)字的空位顯示出 然而大寫字母“U”在wingdings 2這種字體格式下,就會(huì)變成 于是……我們先把空位填上“U”,再通過一段代碼把有“U”的單元格字體從宋體變成wingdings 2。 右鍵單擊工作表標(biāo)簽,【查看代碼】,在代碼窗口中輸入以下內(nèi)容: Private Sub Worksheet_Change(ByVal Target As Range) For i = 5 To 21 設(shè)置循環(huán) Cells(6, i).Font.Name = '宋體' 第6行第5到21列字體設(shè)為【宋體】 If Cells(6, i) = 'U' Then 設(shè)置條件 Cells(6, i).Font.Name = 'Wingdings 2' 如果第6行第4到19列有等于“U”的單元格,則修改該單元格字體為Wingdings 2 End If 結(jié)束條件 Next 結(jié)束循環(huán) End Sub OK,大功告成! 好了,今天的內(nèi)容就是這些,小伙伴們?cè)僖娎病?/p> 作者:扯淡子 公式解釋整理:祝洪忠 |
|