文字列操作
|
|
数式 / 関数 |
交通費を清算する伝票ですが、うちの会社ではうえのような伝票を使っています。まぁ、簡素化したものですが。
右下のところが合計金額になって、3~8行目は詳細です。合計は簡単にSUMを使えば良いんでしょうが、問題となってくるのが文字列を一文字一文字切っていかないといけないという事です。
(E列が万単位、F列が千単位…という風になっているので)
さてどうしましょう。
ちょっとその前に
最終的にこのようにしたいとしましょう。
※金額の頭に円マーク(¥)を付ける。
という条件を付け加えておきます。伝票を書く際には必要ですからね。
逆さかな・・・?
これを作る時に最初に浮かんだのが文字列を逆にしてMID関数で頭から参照していくやり方。
520 これを逆にし、 025 という文字列にします。
で、1の位(セルI10)に =MID( 文字列 , 1 , 1)
10の位(セルH10)に =MID( 文字列 , 2 , 1)...
これでいいかなーと思ってたんですが・・・
あれ?文字列を逆さにする関数ってなかったっけ?(汗
いや、VBだったのか?あれ?C#?ちょっと混乱ぎみに関数が解りませんでした。
ですので文字列を逆さにせずにそのまま「520」から文字を切ります。
MID関数とLEN関数を組み合わせる
LEN関数は文字列の総数を返す関数です。たとえば「=LEN(520)」だと3文字なので「3」となります。「=LEN(1000)」であれば「4」です。
MID関数は文字列の○文字目から×文字切り出す関数です。「=MID(“520”,1,1)」であれば「5」となり、「=MID(“520”,2,2)」であれば「20」が返ります。
この二つを組み合わせましょう。
1の位
=MID(SUM(C3:C8),LEN(SUM(C3:C8)),1)
10の位
=MID(SUM(C3:C8),LEN(SUM(C3:C8))-1,1)
100の位
10の位の関数にある-1を-2に変えるだけ
解説すると、
MID ( 合計[520] , LEN ( 合計[520] ) , 1 )
↓ LEN(520)は3
MID ( 合計[520] , 3 , 1 ) なので 520 の3文字目から1文字切り出す。ので1の位は「0」となるわけです。
10の位だとLEN ( [520] ) -1 としているので
MID ( [520] , 2 , 1 ) になり、520 の2文字目から1文字切り出す。ので10の位は「2」となるのです。
最後に”¥”円マーク
これは全部の位の関数にIF文を付けることで対応できるでしょう。
LENで返した合計文字列に+1のところに”¥”を付けるだけですね。完成例の万単位のところは空白にする為のIF文も忘れないようにいれてあげましょう。
これで合計金額の桁が変わっても右下の合計欄はちゃんと頭に¥がついてくれます。
関連記事
- 前の記事
- Excel2007ファイル(xlsx)を2003で開く
- 次の記事
- 指定した日より古かったら(IF文)