人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

お世話になります

Excel2007での質問です

A列にA2以降結合セルで日付が入っています
B列にはB2以降時刻が入っています(結合セルではありません)

C列に日付時刻のデータを入れたいです。

※A列2011/1/1とあり
B列の時刻ですが25:00などのデータがあるのでその場合は
2011/1/2 1:00としたいです

日付を結合解除してセルに入れるのに
標準モジュール
========================
Sub Test()
MyLastR = Selection.Row + Selection.Rows.Count - 1
Selection.UnMerge
For Each c In Selection
If c.Offset(1, 0).Row > MyLastR Then Exit Sub
If c.Offset(1, 0).Value = "" Then
c.Offset(1, 0).Value = c.Value
End If
Next c
End Sub
========================
をA列で実行したところデータの入っていない下の行すべてに日付が入りました

よろしくお願いします。


●質問者: breakthrough1
●カテゴリ:コンピュータ
✍キーワード:b2 EXIT NeXT sub test
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● うぃんど
●200ポイント ベストアンサー

A列の結合を解除せずともMergeAreaというプロパティを参照すればデータを取得することが出来、下記のように計算することが出来ます

・下記の結果C列が40545.0416666667といったような数値になっている場合はC列のセルの書式で日時型に設定してください

・WITHは使っても使わなくてもかまいませんが、使っておくと使いまわしが楽になる場合があります

Option Explicit

Sub Macro1()
 Dim lastRow As Long
 Dim i As Long
 
 With ActiveSheet
 lastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
 lastRow = lastRow + .Cells(lastRow, "A").MergeArea.Count - 1
 For i = 2 To lastRow
 .Cells(i, "C") = .Cells(i, "A").MergeArea.Item(1).Value + .Cells(i, "B")
 Next i
 End With
End Sub

B列に必ず値が入っている場合には下記のようにも出来ます


Sub Macro2()
 Dim lastRow As Long
 Dim i As Long
 
 With ActiveSheet
 lastRow = .Cells(.Rows.Count, "B").End(xlUp).Row
 For i = 2 To lastRow
 .Cells(i, "C") = .Cells(i, "A").MergeArea.Item(1).Value + .Cells(i, "B")
 Next i
 End With
End Sub
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ