- ベストアンサー
エクセルのデータ整理方法とマクロの利用について
- 10年分のエクセルデータ(日付と時間)があり、一部の日時が飛んでいたり、詰まっていたりします。日時を暦どおりに整理する方法と、C列も一緒にずらす方法を教えてください。
- エクセルのデータ整理に関する質問です。10年分のデータがあり、一部の日時が欠落または詰まっています。この問題を解決する方法と、C列も連動してずらす方法を教えてください。
- エクセルのデータ整理について質問です。10年分のデータがありますが、一部の日時に欠損があります。欠損を埋める方法と、C列も一緒に調整する方法を教えてください。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
Sub sample2() Dim d As Long, i As Long Dim dt1 As Long, dt2 As Long For i = Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1 If IsDate(Cells(i - 1, 1)) = False Then Exit For dt1 = (Cells(i, 1) + Cells(i, 2)) * 24 dt2 = (Cells(i - 1, 1) + Cells(i - 1, 2)) * 24 d = dt1 - dt2 If d > 1 Then Cells(i, 1).Resize((d - 1), 3).Insert Shift:=xlDown End If Next End Sub
その他の回答 (5)
- tsubuyuki
- ベストアンサー率45% (699/1545)
> マクロでも良いので、どなたか とのことですので、マクロについてはある程度おわかりなのでしょう。 と判断させていただき、無駄な解説は省きます。 Sub sample() Dim d As Long, i As Long For i = Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1 If IsDate(Cells(i - 1, 1)) = False Then Exit For d = Cells(i, 1) - Cells(i - 1, 1) If d > 1 Then Cells(i, 1).Resize((d - 1) * 24, 3).Insert Shift:=xlDown End If Next End Sub
補足
ありがとうございます。 早速試したみましたところ 日付と時間がが飛んでるとこはちゃんと空白になりますが 同じ日で時間が飛んでる個所は空白にはならないようです。 お手数ですが再度ご教授願いませんでしょうか?
- KURUMITO
- ベストアンサー率42% (1835/4283)
マクロというよりも関数で対応するのがおすすめです。 例えばシート1に元のデータが有るとします。 A2セルから下方には年を含めた日付が、B2セルから下方には1時から0時に終わる時刻が、C列にはデータが入力されているとします。 そこですべての日付を取り込んだお求めの表をシート2に表示させるとしたらシート2のA2セルには次の式を入力します。 =IF(Sheet1!$A$2="","",IF(DATE(YEAR(Sheet1!$A$2),MONTH(Sheet1!$A$2),DAY(Sheet1!$A$2)+(ROUNDDOWN((ROW(A1)-1)/24,0)))>MAX(Sheet1!$A:$A),"",DATE(YEAR(Sheet1!$A$2),MONTH(Sheet1!$A$2),DAY(Sheet1!$A$2)+(ROUNDDOWN((ROW(A1)-1)/24,0))))) セルの表示形式を日付から選択します。 B2セルには次の式を入力します。 =IF(A2="","",TIME(HOUR(Sheet1!$B$2)+MOD(ROW(A1)-1,24)+1,0,0)) セルの表示形式を時刻から選択します。 C2セルには次の式を入力します。 =IF(A2="","",IF(COUNTIF(Sheet1!$A:$A,A2)=0,"",INDEX(Sheet1!$C:$C,MATCH(A2,Sheet1!$A:$A,0)+MOD(ROW(A1)-1,24)))) 次にA2セルからC2セルを選択して右クリックし、「コピー」を選択します。 名前ボックスにはA2と表示されていますがその窓をA2:C88000のように変更して決定します。 それらの範囲が選択状態になりますので右クリックをして「貼り付け」を行います。 以上で完成です。
お礼
なんとか解決いたしました。 ありがとうございました。
補足
ありがとうございます。やってみましたが なぜか日付が変わるのが、本来0時のはずが 2時の時点になります。 またC列のでデータがないところが「0」で表示されてしますので データがない個所は空白にしたいのですが お手数ですが再度ご教授願えませんでしょうか?
- hallo-2007
- ベストアンサー率41% (888/2115)
別シートに A B C 日付 時刻 データ と準備して 手入力で 日付と時刻を2行分くらい入力 あとは、10年分を下までマウスでコピー C列は Vlookup関数かなにかで、元データのシートから引っ張ってこれないでしょうかね。 ご希望のシートになったら、コピーと値の貼り付けで固定して、元のシートを削除します。 一回こっきりの作業なら、わざわざVBAを開発するより手間がかからない内容です。
お礼
ありがとうございます。 参考にさせていただきます。
- MarcoRossiItaly
- ベストアンサー率40% (454/1128)
- aokii
- ベストアンサー率23% (5210/22062)
とりあえず、D列にドラッグコピーで日付を入れて比較し、A列の日付が飛んでいるのがどこなのか探して修正してはいかがでしょう。
お礼
ありがとうございます。 おっしゃるとおりなのですが かなりの数になりそうなので できれば関数かマクロで一括処理したく 質問させていただいた次第です。
お礼
完璧です。 ありがとうございました。