-
三流君の [コンビニ系HPへ] [VBA系HPへ] [ASP系HPへ] [愚痴系HPへ]
戻 る
確認したい方は、→011.lzh をダウンロードして、見てください。

下記のような感じで、テストしました。

VBAテストモジュール
<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 だと、中のスペースはそのままで、表示されます。 /* * 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使いに勝った話をしたいですねぇ。 *今度は、今風・流行り言葉のリベンジだぁ〜、、、と変な気合を入れる。   返討ちにあわないでね、、、はい。。。


質問や要望、クレームを送る(三流君に連絡する 連絡方法)

質問や要望など連絡方法でお互い確認が取りやすく、便利なのが掲示板なのですが、私の対応のまずさから不定期で荒れてしまい、掲示板は現在封鎖中です。(反省しなきゃ)
感想や質問・要望・苦情など 三流君へメッセージを送る。
時間的余裕のある要望・質問・苦情の場合は、下記のフォームからメッセージを送ることができます。
あなたのお名前(ニックネーム):さん
返信は?: 不用(HP更新を待つ) , E-mail→ アドレス:に返事をもらいたい

(感想や質問・要望・苦情はHPで記事に載せることがあります。)

急ぎで連絡がほしい、そんな時は:[三流君連絡先]に連絡してください。

番外編 愚痴系で書いてた今日の一品 (短いサブ関数など)

2000/05/13 SQL Count関数を使ってみる
2000/05/11 Access97 標準関数Midなどが使えない
2000/05/09 SendObjectのエンコード
2000/05/08 クエリーで〜以外とは
2000/04/27 Imagingコントロールを使ってみた
2000/04/25 Excel97 VBA イベントなど
2000/04/24 Access97で複数のプリンタを切替えて使用
2000/04/20 書式付きエクスポート DoCmd.OutputToで、できます
2000/04/19 Access97でExcel形式へExport時に書式設定を行いたい
2000/04/13 Access97でOutlook97/98とリンクする方法
2000/04/13 VBA Nameステートメント
2000/04/04 Accessでキー取得
2000/04/04 AccessでFile参照ダイアログ?
2000/04/03 縦書用数値変換改良
2000/04/01 Access Err テーブルを消したい
2000/03/31 縦書き数値、どうしてますか?
2000/03/29 VBA 手抜きで、処理後、explorerを開く
2000/03/28 Access --> Word へデータ
2000/03/24 名前一覧Excelの機能で、同じことできました
2000/03/23 Excel97 VBA セルに付けた名前一覧を作成する
2000/03/21 Excel セルに名前付け
2000/02/25 iniFileを読む GetPrivateProfileString
2000/02/15 Excel VBA Rangeオブジェクトとサンプル
2000/02/14 Access97 SizeMode/OLEサイズ で画像調整
2000/02/10 Access97 Pictureプロパティとサンプル
2000/02/09 Access97 集計クエリーで重複値をハジク
2000/02/07 Access97 サブフォームへ値をセット
2000/02/04 Access97 コントロールソース、チョットした使用法
2000/02/01 Access97 フォームフッター
2000/01/18 Access97 now()関数で有効期限処理、、、

←パソコンの技術系の書籍を探しているなら コンピュータ関連の出版社33社(アスキー、インプレス等)が共同運営するコンピュータの本・専門店 種類が豊富で探し易い※在庫ありが48時間以内発送


[三流君(TOP)]へ戻る。