Articles

文字列操作

この記事をdel.icio.usに登録する この記事をはてなブックマークに登録する この記事をGoogleブックマークに登録する この記事をYahoo!ブックマークに登録する この記事をdiggに登録する この記事をlivedoor clipに登録する この記事をNewsGattor Onlineに登録する

48-1.png

交通費を清算する伝票ですが、うちの会社ではうえのような伝票を使っています。まぁ、簡素化したものですが。
右下のところが合計金額になって、3~8行目は詳細です。合計は簡単にSUMを使えば良いんでしょうが、問題となってくるのが文字列を一文字一文字切っていかないといけないという事です。
(E列が万単位、F列が千単位...という風になっているので)

さてどうしましょう。



ちょっとその前に

最終的にこのようにしたいとしましょう。
48-2.png
※金額の頭に円マーク(¥)を付ける。
という条件を付け加えておきます。伝票を書く際には必要ですからね。

逆さかな・・・?

これを作る時に最初に浮かんだのが文字列を逆にして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文も忘れないようにいれてあげましょう。

これで合計金額の桁が変わっても右下の合計欄はちゃんと頭に¥がついてくれます。

関連記事




この記事をdel.icio.usに登録する この記事をはてなブックマークに登録する この記事をGoogleブックマークに登録する この記事をYahoo!ブックマークに登録する この記事をdiggに登録する この記事をlivedoor clipに登録する この記事をNewsGattor Onlineに登録する

トラックバック一覧

コメント一覧

コメント投稿フォーム
Name
Subject
Mail
URL
Comment

Password
Secret
管理者にだけ表示を許可する

Navigations, etc.

Navigations

ブログ記事を検索

SPONSORS

人気記事ランキング

ブログパーツ

メールフォーム

名前:
メール:
件名:
本文:

Tweet

最新記事