<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)]