<Excel使いに負けた日...ワークシート関数TRIM編> 目次 1.はじめの挨拶 2.それは、土曜出勤のことだった 3.「ExcelのTrim関数でできるよ」そんなバカな、、 4.飲み会でも、技術話? 5.おわりの挨拶 ---------------------------------------------------------------------------- /* * 1.こんにちは */ こんにちは、今週も、始まりますね。(平和な一週間でありますように、、、) 今回は、先週土曜日、 Excel使いと戦って、負けた?ことを中心に書いていこうと思います。 *↑隣の部(データサービス)のやさしい部長さんです。 負けたのに、飲み代も1000円だったしねぇ。 原因は、思い込みだったけど、、、う〜ん、くやしい。 前置きは、これくらいにして、そろそろ、始めます。 /* * 2.それは、土曜出勤のことだった */ 先週、土曜日、出勤してました。 システム課のメンバー帰ったし、 一人になったので、メールチェックを行う。 *まったく、会社の設備を使って、、、とんでもないヤツだ。。。 おっ、メール来てるジャン。(チョット嬉しい) なになに、がんばってください、、ハイ、ガンバリマスヨなんとか、 次は、 >SP_CNV.MDBで姓と名の間に >半角スペースが複数存在(3個以上)する場合 >全角スペースと半角スペースが混在する場合 >全角スペースが複数存在(2個以上)する場合 >はどう処理すれば良いでしょうか? >お知恵をお貸し下さい。 あっ、やられた、、、データの想定ミスだぁ。。。 確かに、半角スペースが3つだと、全角2つになってしまう。。 例)匿名 希望-->匿名□□希望 となってしまう。 ちぇ、またミスっちゃったなぁ。まぁいっかと思いつつ、帰る準備をする。 隣のデータサービス課(データパンチ関係の仕事してます)に システム課帰りますと挨拶をしに行きました。2名まだ残ってました。 部長「あかしやき3人で食べに行かない?」と飲みの誘い。 何を思ったか、部長・スパーバイザーさんに、 「データ処理関係で、姓名間全角スペース一個とか指定って、よくあるんですか?」 と聞いたところ、 SP「よくあるよ、半角スペース2個じゃなくて、全角1つにしてとか」 と答えが返ってきました。 ここでやめときゃいいのに、 「半角の変換プログラムサンプルで作ったら、半角3つ入った時、処理できなくて」 と話を続けてしまった、、、 隣に座っていた、部長が一言、 「ExcelのTrim関数でできるよ」 と悪魔のささやき???(ほんとは、親切なので、天使の助言かな?) これが、長い土曜日の始まりだった、、、 /* * 3.「ExcelのTrim関数でできるよ」そんなバカな、、 */ 心の中、で、できないでしょ、Trim関数じゃ、、、左右のスペース取るだけじゃないの? と思い、「trimって、左右のスペース取るだけじゃないの?」と言葉の砲撃? 部長「じゃ、やってみよう」とパソコンの電源を入れる。 しばらくするとWin98のロゴ、 Excelを立ち上げて、データと関数を入れる。 A列 B列 1 匿名 希望 =trim(a1) --> 匿名 希望 2 匿名□□希望 =trim(a2) --> 匿名□希望 あっ、なんで中のスペースが取れるの?と驚く。。。 心の中では、絶対できない、、、飲み代カケてもいいと思っていた。 (カケは勝って負けても嫌いなので、普段はやらないのですが、 そんな私がカケけたくなるほど、自分の中では絶対の自信だった) 動揺しつつ、「半角3つを全角1つにしたいので」と言ってしまった。 Excel使いの部長には、なんでも無い攻撃で、 「=jis(trim(a1))でできる」 とあっさり、返された。 おみごと、、、でした。。。 Excel使いに負けた、、、と思いながら、飲みに行く。。。 枠外開設・グチ --- 思い込みとExcelワークシート関数 Excelワークシート関数とVBAの関数、 同名の関数でも動作が違うみたいです。 みなさんも、変な思い込みは無くして、相手の言葉を良く聞きましょう。 飲み代、カケなくてよかったなぁ、、、ほっとしてます。 だから、テメエは(思い込みの激しいKen3は)、 勝負ごと弱いんだよ。 ハイ、了解。ゴメンネ。 ちなみに、VBAだと、真中のスペース取れません、安心?してください。 Sub Macro1() Dim a As String a = "匿名 希望" MsgBox Trim(a) End Sub だと、中のスペースはそのままで、表示されます。 Excelのテスト VBAテストモジュール テストのブックはここから hosoku/011/index.html /* * 4.飲み会でも、技術話? */ 普通なら、3の敗戦で、マルマガ終わるんだけど、 飲み会でも技術話?の続きありました。 飲んでる時、やさしい部長より、 Excelで不思議な、質問、ありました。 IF(B5>"17:00","残業","") だと、判断できないと、、、 って、飲んでる時、言われてもなぁ... B列 C列 5行 18:00 =IF(B5>"17:00","残業","") 6行 18:00 =IF(B6-"17:00">0,"残業","") 7行 18:00 =IF(B7>"17:00"+0,"残業","") 8行 18:00 =IF(B8>time(17,0,0),"残業","") 5行目の=IF(B5>"17:00","残業","") ですんなり、できないみたいです。 なんか、あってる?ぽいけどなぁ。 で、 苦肉の策?で、 6行目の=IF(B6-"17:00">0,"残業","") みたいに、17時を引いて、0以上だったら に式を変更したらうまくいったらしいです。 また、7行目みたいに、+0(なんで0たすの?) を入れると、思い通り、動作します。 その時、飲んでたので(言い訳?) #17:00#と囲えば、=IF(B5>#17:00#,"残業","") 日付型になるからOKでは と答えたのですが、本日、やってみたら、これは、ウソでした。 *#はVBAだけみたいです、、、ワークシート上はエラーになります。 お返しをしようと、#で囲うを教えたんだけど、、また、裏目でした。 だから、確認してから、答えようよ、、はいはい。。。 話は、戻って、 キレイ?に書くと、8行目のTime関数を使って、 時間(シリアル値)を返して、比較するのが良いみたいです。 "17:00"だけだと、時間と文字列を比較するので、ダメ。 b5(時間) - "17:00"(文字列)は、自動的に時間の引き算してくれるのでOK "17:00"(文字列) + 0(数値)は、なぜか結果が時間になる?のでOK お行儀よく書くなら、Time関数を使ってtime(時,分,秒)を使います *VBAのタイム関数とは、動作が違うので、注意してください。 枠外解説・グチ -- Excel97...もう少し賢ければ、、 Excel2000だと、=IF(B5-"17:00">0,"残業","")で良いかもしれないので、 インストールしている人は、結果、教えてください。 ken3のExcel97では、ダメでした。 VBA 日付型 (Date) ヘルプから、引用 --- 日付型 (Date) の変数は、IEEE 64 ビット (8 バイト) の浮動小数点数の変数です。西暦 100 年 1 月 1 日〜西暦 9999 年 12 月 31 日の範囲の日付と、0:00:00 〜 23:59:59 の 範囲の時刻を表すことができます。日付型の変数には、日付リテラルとして認識可能な任 意の値を代入できます。日付リテラルの形式は、#1993 January 1# または #93 Jan 1 # のようにシャープ記号 (#) で囲む必要があります。 ワークシート関数 TIME のヘルプから、引用 ---- 指定された時刻に対応するシリアル値を返します。計算結果のシリアル値は、0 〜 0. 99999999 の範囲にある小数値で、0:00:00 (午前 0 時) から 23:59:59 (午後 11 時 59 分 59 秒) までの時刻を表します。 書式 TIME(時, 分, 秒) 時 時を表す数値を 0 〜 23 の範囲で指定します。 分 分を表す数値を 0 〜 59 の範囲で指定します。 秒 秒を表す数値を 0 〜 59 の範囲で指定します。 使用例 ダブル クォーテーション (") は、戻り値が文字列であることを表します。 TIME(12,0,0) = 0.5 (正午に対応) TIME(16,48,10) = 0.700115741 (午後 4 時 48 分 10 秒に対応) /* * 5.おわりの挨拶 */ 長い?土曜日が終わって、日曜日、メルマガ書いてます。 ぜったいできる、、、と言って飲み代かけなくて、 よかったなぁ、、の結果レポートでした。 *何かの参考になれば、幸いです。。。 なんか、疲れが貯まったような。 まぁ、飲み代1000円で、いろいろな発見あったし、良かったかな? でも、飲んでる時は、楽しい話をしましょうよ、、技術話じゃなくて。 やさしい部長に感謝の三流プログラマーKen3でした。。。 では、また。。。 次回は、Excel使いに勝った話をしたいですねぇ。 *今度は、今風・流行り言葉のリベンジだぁ〜、、、と変な気合を入れる。 返討ちにあわないでね、、、はい。。。
ここまで、読んでいただきどうもです。ここから下は、三流君のホームページの紹介・案内です
目的の情報が見つかったか?少々心配しつつ、、、
項目別に本音?それとも建て前?的な記事をまとめました。
気になったジャンル↓を選択してください。 |
Blogとリンク:[三流君の作業日記]/ [愚痴(Bookmark)]/ [広告Blog(Bookmark)]