Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


4089 / 13646 ツリー ←次へ | 前へ→

【58501】A列を走査し、特定の場所に行を挿入する 初心者 08/10/28(火) 15:31 質問[未読]
【58504】Re:A列を走査し、特定の場所に行を挿入する ひげくま 08/10/28(火) 15:53 発言[未読]
【58507】Re:A列を走査し、特定の場所に行を挿入する 初心者 08/10/28(火) 16:18 お礼[未読]
【58505】Re:A列を走査し、特定の場所に行を挿入する Jaka 08/10/28(火) 15:58 発言[未読]
【58506】Re:A列を走査し、特定の場所に行を挿入する 初心者 08/10/28(火) 16:15 お礼[未読]

【58501】A列を走査し、特定の場所に行を挿入する
質問  初心者  - 08/10/28(火) 15:31 -

引用なし
パスワード
   いつもお世話になっております。

題名の通りなのですが、A列には2008/07/26〜2008/10/30にまでが上から下に昇順で並んでいます。

【例】
A1=2008/07/26
A2=2008/07/26
A3=2008/07/26
A4=2008/07/26
A5=2008/07/27
A6=2008/07/27
A7=2008/07/28
A8=2008/07/28




A20000=2008/10/30

■連続で同じ日付が何行入ってるかはランダムになります。
■上セルと下セルとで日付が違った場合にその間に行を挿入したいのです。

dim LastR as Long
dim R as Long

 LastR = Worksheets(1).Range("A65536").End(xlUp).Row
    For R = 1 To LastR
     ここからがわからないです。
        
    Next

ご教示ください。

【58504】Re:A列を走査し、特定の場所に行を挿入す...
発言  ひげくま  - 08/10/28(火) 15:53 -

引用なし
パスワード
   こんにちは。

>     For R = 1 To LastR
>      ここからがわからないです。
>         
>     Next

ということですが、そこはそれぞれの行での処理内容を書く、というのは解っているんですよね?

そして、その処理内容とは、

> ■上セルと下セルとで日付が違った場合にその間に行を挿入したいのです。

なんですよね?

それをそのまま書くだけなんですけど、どこがどう解らないのでしょうか?
Forループを使おうとしているくらいなのに、この処理内容がまったく解らない、というのはちょっと不思議です。

【58505】Re:A列を走査し、特定の場所に行を挿入す...
発言  Jaka  - 08/10/28(火) 15:58 -

引用なし
パスワード
   > LastR = Worksheets(1).Range("A65536").End(xlUp).Row
    For R = LastR To 2 step -1
      if Cells(R,1).value <> cells(R+1,1).value Then
       rows(R).Insert
      End if
>    Next
>
>ご教示ください。

【58506】Re:A列を走査し、特定の場所に行を挿入す...
お礼  初心者  - 08/10/28(火) 16:15 -

引用なし
パスワード
   ▼Jaka様
ありがとうございます。

Option Explicit


Sub Inserting1()
  Dim R As Long
  Dim LastR As Long
  
Application.ScreenUpdating = False
  
  LastR = Range("A65536").End(xlUp).Row
  
    For R = LastR To 2 Step -1
      If Cells(R, 1).Value <> Cells(R + 1, 1).Value Then
       Rows(R + 1).Insert
      End If
    Next
    
Application.ScreenUpdating = True

End Sub

で、欲しい結果を得られました。

大変参考になりました。

【58507】Re:A列を走査し、特定の場所に行を挿入す...
お礼  初心者  - 08/10/28(火) 16:18 -

引用なし
パスワード
   ▼ひげくま さん:
>こんにちは。
>
>>     For R = 1 To LastR
>>      ここからがわからないです。
>>         
>>     Next
>
>ということですが、そこはそれぞれの行での処理内容を書く、というのは解っているんですよね?
>
>そして、その処理内容とは、
>
>> ■上セルと下セルとで日付が違った場合にその間に行を挿入したいのです。
>
>なんですよね?
>
>それをそのまま書くだけなんですけど、どこがどう解らないのでしょうか?
>Forループを使おうとしているくらいなのに、この処理内容がまったく解らない、というのはちょっと不思議です。


Option Explicit


Sub Inserting1()
  Dim R As Long
  Dim LastR As Long
  
Application.ScreenUpdating = False
  
  LastR = Range("A65536").End(xlUp).Row
  
    For R = LastR To 2 Step -1 ←※
      If Cells(R, 1).Value <> Cells(R + 1, 1).Value Then
       Rows(R + 1).Insert
      End If
    Next
    
Application.ScreenUpdating = True

End Sub

※For R = 2 To LastR としていたので、たどりつけませんでした。
 説明不足で申し訳ないです。

ご指摘ありがとうございます。

4089 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free