プロが教える店舗&オフィスのセキュリティ対策術

csvファイルをエクセルで読み込みデータの配置を変えたいです。
csvファイルを読み込む際にデータの区切り位置でカンマ区切りにし
今は下記のような配置になっています。
文字列 文字列 文字列 文字列 日付 時刻 時刻 文字列 文字列 (たまに空白)...
と文字列と日付、時刻、空白が混ざってます。
また、不規則な並び順になっています、
それをとりあえず改行させたいと思っています。
=OFFSET(Sheet1!$A$1,INT(ROW(A1)/100),MOD(ROW(A1)-1,100))
を使い改行することはできるのですが、文字列と日付、時間が混ざっているので
日付や時刻が文字列になってしまします。どのようにすれば時刻、日付を区別することができるでしょうか。

よろしくお願いします。

A 回答 (3件)

最終的に、データがどう並べばいいんですかね?そこが質問から読み取れないので…



例えば1行の始まりを必ず時刻にして、1行には時刻は一つしか存在しないようにしたいとか、もう少しやりたい事というか目指す形を具体的に示してもらえると、答える方はイメージしやすくなります。

闇雲に改行するだけでは、データがより扱いづらくなるだけのような予感がすることと、おそらくマクロを動員しなければ実現できないだろうなとは思いました。

これは全くの思い付きですが、一見無秩序に見えるけど、実は37個とかの半端な個数で区切ったら綺麗に並ぶとか、必ず特定データでレコードが終了するみたいな規則性はないですか?
    • good
    • 0

改行のない無駄に長いカンマ区切りのデータでしょうか。


それはそのデータが悪い。

データ100個ずつで改行(?)するのではなく、パターンを読んで改行(?)するようにしてはいかがでしょう。
(先頭から、日付、時間、の順に並ぶように改行(?)するとか)
この場合、Excelに読み込むより前にテキストエディタ(メモ帳)やWordで処理したほうが早いかもしれません。
(目で見て霧の良いところを選び質問者さん自身の手で編集しましょうという事です)
でなければ前の質問者さんのようにマクロ(VBA:Visual Basic for Application)での処理になると思います。
マクロが分からず10,000くらいのデータ数なら手で改行を入れたほうが早いと思います。

日付と時間を含むcsvファイルは、
  日付、時間、以下文字列が不特定数
なんてパターンが多いですからね。
そうでなくてもExcelに読み込んだ後で文字列を日付と時間に直すことが簡単にできます。
とりあえず日付が先頭にくるよう、あらかじめ改行を入れ整形しておくとよいでしょう。
(空白が必ず時間の前にあるなら、その空白は省略された時間とみなしても良いでしょう)

・・・ってか、元のデータが不親切すぎると思うんだ。
機械が吐き出すデータなら、改行させる設定(デリミタの設定など)があるはずですので取扱説明書を読んでみてください。
    • good
    • 0

何がしたいのかは、私にはいまいち理解できないのですが、、、


>どのようにすれば時刻、日付を区別することができるでしょうか。
については、

isdate関数
http://officetanaka.net/excel/vba/function/IsDat …
で日付時刻型の判断はできますので、

単に日付だけかどうかは、ストリングの長さやdateserialでもう一度日付型にいれなおして、
比べることによって判断できる場合も有ります。

時刻かどうかも架空の日付に値をくっつけて、isdate関数で判断することにより
時刻であるという判断はできます。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!