[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『データ区切がマクロで思うようにできません』(らいつい)
いつも参考にさせていただいております。
現在、壁にぶつかっているのでどうか助けてください。
日付+時間がひとつのセルになっているデータを日付、時間にわけようとしています。
元セル(B1セルにあります):<2014/6/19 21:40:20>
わけたい形(B1:B2に書きたい):<2014/6/19> <21:40:20>
(<>はデータではありません。セルの区切りと思ってください)
元セルは表示形式/ユーザ定義で<yyyy/m/d h:mm>とされています。
これを日付と時間の間に半角スペースがあるので、半角スペースを区切記号として別セルにわけようとしています。
これが手動ならうまくいくのですが、それを記録したマクロにするとうまくいきません。
・手動の結果
<2014/6/19 0:00> <21:40:20> ←B1の0:00は後で表示形式で調整するのでスルーしてくださって結構です
・記録マクロ実行の結果
<2014/6/19 0:00> <9:40:20> <PM> ←24時間表示が壊れて3つ目のセルが作られてしまいます
・記録マクロのコード
Selection.TextToColumns Destination:=Range("B2"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=False, _ Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo _ :=Array(Array(1, 1), Array(2, 1)), TrailingMinusNumbers:=True
・それぞれの表示形式
実行前 実行後
B1 <yyyy/m/d h:mm> <yyyy/m/d h:mm>
B2 標準 <h:mm:ss>
B3 標準 標準
コードには何も手を加えていないのに結果が変わってしまいます。
何が問題なのでしょうか?
ご教授お願いいたします。
< 使用 Excel:Excel2010、使用 OS:Windows7 >
確かに再現出来ました! 文字列に直してから分割したら出来ましたので、こちらでいかがでしょうか? Sub Macro1() Selection.Value = Evaluate("TEXT(" & Selection.Address(0, 0) & ", ""'yyyy/mm/dd hh:mm"")") Selection.TextToColumns Destination:=Range("B1") _ , DataType:=xlDelimited _ , TextQualifier:=xlDoubleQuote _ , ConsecutiveDelimiter:=True _ , Tab:=False _ , Semicolon:=False _ , Comma:=False _ , Space:=True _ , Other:=False _ , FieldInfo:=Array(Array(1, 1), Array(2, 1)) _ , TrailingMinusNumbers:=False End Sub (稲葉) 2014/07/08(火) 18:20
ありがとうございます。できました!
"Evaluate"を知らなかったので、こちらも勉強させていただきました。関数が呼べるのはいろいろ便利そうですね。
今後ともよろしくお願いいたします。
p.s.上記での記録マクロコード内のDestinationの行先間違ってますね。「B1」が正解です。
いろいろごちゃごちゃいじっていてコピペをミスしたようです。失礼いたしました。
間違ったコードも読み取ってくださってさらに感謝です。
(らいつい) 2014/07/09(水) 12:11
ごめんなさい、複数行ある場合を考慮していませんでした。
Evaluate("TEXT(" & Selection.Address(0, 0) & ", ""'yyyy/mm/dd hh:mm"")") ここを
Evaluate("IF(" & Selection.Address(0, 0) & ",TEXT(" & Selection.Address(0, 0) & ", ""'yyyy/mm/dd hh:mm""),)") こちらに置き換えてください。
Evaluateメソッドについて、こちらに詳しく解説されています! [[20070212134849]]
(稲葉) 2014/07/09(水) 12:47
補足を頂戴していたの気づきませんでした、失礼しました。
複数行についてはこの処理の手前でLoopさせる場所があるので、そこに入れて回しましたので
何とか望み通り動いています。
お心づかいありがとうございました。
(らいつい) 2014/07/12(土) 00:40
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.