Excel VBA 質問スレッド No.23 (解決済)

列内の指定文字数を削除したい

投稿者 : あすみん     投稿日時 : 2017/04/17(Mon) 16:13:28     OS : Windows 7     EXCEL : Excel 2010
初めまして
初心者ですがよろしくお願いします

A列にデータを読み込んでくると、以下のように日時が読み込まれてきます

   A
20170321092321 ← 日時が連続して読み込まれます

これを日付と時間に分けたいので

B列にA列をコピーして
A列の右から6文字を消し、B列の左から8文字を消そうと考えています

   A         B
20170321092321 20170321092321
         ↓
   A         B
20170321     092321

<質問1>
LEFT,RIGHT関数で文字を消すことは知っているのですが、
A列に読み込んだデータがどれだけあるのかわかりません
(空白行があるのかもわかりません)

過去の記事を見させていただいて「xlUp」を使えば・・・
というところまでは分かるのですが、どのようにすればよいのかわかりません

<質問2>
A列に日付、B列に時間とできたとして
①日付を
20170321 → 2017/03/21

②時間を
092321 → 09:23:21

上記のようにすることは可能でしょうか

ご教示頂きたく投稿させていただきました
よろしくお願いします

[返信 1] Re : 列内の指定文字数を削除したい
投稿者 : 管理人     投稿日時 : 2017/04/18(Tue) 21:22:18
A列にデータがあるのであれば、EndプロパティでA列の最終行から上方向(xlup)に向かって最終行を取得してください。

日付や時刻形式に変換するには、DateSerialとTimeSerialでデータを設定後、
セルの書式を表示したい形式に設定してください。


Sub test()

Dim lastRow As Long
Dim str As String
Dim i As Long

' A列の最終行取得
lastRow = Cells(Rows.Count, 1).End(xlUp).Row

' 1行目から最終行までループ
For i = 1 To lastRow

str = Cells(i, 1).Value

' A列のデータが14文字の場合にデータ変換
If Len(str) = 14 Then

' 日付編集
Cells(i, 1).Value = DateSerial(Mid(str, 1, 4), Mid(str, 5, 2), Mid(str, 7, 2))
' 日付書式設定
Cells(i, 1).NumberFormatLocal = "yyyy/mm/dd"

' 時刻編集
Cells(i, 2).Value = TimeSerial(Mid(str, 9, 2), Mid(str, 11, 2), Mid(str, 13, 2))
' 時刻書式設定
Cells(i, 2).NumberFormatLocal = "hh:mm:ss"

End If

Next i

End Sub

[返信 2] Re : 列内の指定文字数を削除したい
投稿者 : あすみん     投稿日時 : 2017/04/20(Thu) 19:55:34
管理人さま

ご教授ありがとうございます

このような文(?)は使ったことがないので、何が何のことかわかるまで
時間がかかりました

といっても、まだまだちゃんと理解したかは。。。

結果は希望どうりに表示することができました

おもしろくなってきたので、もっと知りたいと思いました

いろいろとありがとうございました

スポンサード リンク
 
 
当掲示板について
返信入力フォーム
お 名 前  :
内  容   :
ステータス  : この質問を解決済みにする

認証コード  :
        キャプチャ画像


( 処理日時 : 2019-06-17 03:57:18 )

Page
Top