Excel VBA質問箱 IV

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

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


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

【11785】ダブったデータを先頭行のみ残して削除 困ったちゃん 04/3/16(火) 13:35 質問
【11787】Re:ダブったデータを先頭行のみ残して削除 ぴかる 04/3/16(火) 13:40 回答
【11790】Re:ダブったデータを先頭行のみ残して削除 カド 04/3/16(火) 14:46 回答
【11802】Re:ダブったデータを先頭行のみ残して削除 カド 04/3/16(火) 16:02 回答
【11810】Re:ダブったデータを先頭行のみ残して削除... ichinose 04/3/16(火) 18:48 回答
【11813】Re:ダブったデータを先頭行のみ残して削除 Hirofumi 04/3/16(火) 21:22 回答
【11863】Re:ダブったデータを先頭行のみ残して削除 困ったちゃん 04/3/17(水) 18:16 お礼

【11785】ダブったデータを先頭行のみ残して削除
質問  困ったちゃん  - 04/3/16(火) 13:35 -

引用なし
パスワード
   昨日とびとびのセルに番号を入れていくマクロを教えていただきました。

今度は逆に連続したデータを削除したいのです。

1 山田 住所
1 山田 氏名
1 山田 年齢
1 山田 備考
2 田中 住所
2 田中 氏名
2 田中 年齢
2 田中 備考
3 佐藤 住所
3 佐藤 氏名
3 佐藤 年齢
3 佐藤 備考

を、
1 山田 住所
      氏名
      年齢
      備考
2 田中 住所
      氏名
      年齢
      備考
3 佐藤 住所
      氏名
      年齢
      備考

としたいのですが、何らかのフラグがたっていれば出来そうですが、現実には出来そうで、
なかなか出来ません。
宜しくお願いいたします。

【11787】Re:ダブったデータを先頭行のみ残して削除
回答  ぴかる  - 04/3/16(火) 13:40 -

引用なし
パスワード
   困ったちゃんさん、こんにちは。

私はこういう場合、マクロではなく条件付き書式にて対応しています。
数式(自セル=上セル)、書式(文字色・白)
てな感じです。どうかな?。

【11790】Re:ダブったデータを先頭行のみ残して削除
回答  カド E-MAIL  - 04/3/16(火) 14:46 -

引用なし
パスワード
   ▼困ったちゃん さんへ

適当に作ったやつなのですが参考にどうぞ

Option Explicit
  Dim ACELL As Object
  Dim Count As Integer '処理する行の数
  Dim Count1 As Integer '処理する列の数
 
  
  Const bbb = 1
  Const ccc = 300 '処理する行の数
  Const ddd = 2 '処理する列の数
  
'********************************************************************************
Sub 文字を上矢印に変換()
  

  Set ACELL = ActiveCell
  Set ACELL = ACELL.Offset(ccc, 0)
  
  Count1 = 0
  
  Do Until Count1 = ddd
    Count = 0
    Do Until Count = ccc
   
      If (ACELL <> "") And (ACELL = ACELL.Offset(-bbb, 0)) Then ACELL = ""
     
      
      Set ACELL = ACELL.Offset(-bbb, 0)
      Count = Count + 1
    Loop
    
    Count1 = Count1 + 1
    Set ACELL = ACELL.Offset(ccc, 1)
    
  Loop

End Sub

【11802】Re:ダブったデータを先頭行のみ残して削除
回答  カド E-MAIL  - 04/3/16(火) 16:02 -

引用なし
パスワード
   先ほどAsakiさんに教えてもらった方法にて

Sub DataDelete()

  Dim i As Range, j As Long
   
  j = Selection.Count
  
  Do Until (j = 1)
  
    If Selection(j).Value = Selection(j - 1).Value Then
  
      Selection(j).Value = ""
    
    End If
    j = j - 1
  Loop


End Sub

【11810】Re:ダブったデータを先頭行のみ残して削...
回答  ichinose  - 04/3/16(火) 18:48 -

引用なし
パスワード
   困ったちゃんさん、ぴかるさん、カド さん、こんばんは。

1 山田 住所
1 山田 氏名
1 山田 年齢
1 山田 備考
2 田中 住所
2 田中 氏名
2 田中 年齢
2 田中 備考
3 佐藤 住所
3 佐藤 氏名
3 佐藤 年齢
3 佐藤 備考
↑のデータがA列、B列、C列にの1行目からあったとして、
'========================================================
Sub main()
  With Range("c2", Range("c" & Rows.Count).End(xlUp)) _
    .Offset(, -2).Resize(, 2)
   
   .Value = Application.Evaluate("if(" & .Offset(-1, 0).Address & _
                  "=" & .Address & _
                  ",""""," _
                  & .Address & ")")
   End With
End Sub

私は、結構こんなんが好き・・、趣味の世界ですが・・・。

【11813】Re:ダブったデータを先頭行のみ残して削除
回答  Hirofumi E-MAIL  - 04/3/16(火) 21:22 -

引用なし
パスワード
   私は、オーソドックスに

Public Sub Test()

  Dim i As Long
  Dim lngListEnd As Long
  Dim vntDel As Variant
  
  vntDel = Array(Empty, Empty)
  lngListEnd = Cells(65536, "A").End(xlUp).Row
  
  Application.ScreenUpdating = False
  
  For i = lngListEnd To 2 Step -1
    If Cells(i, "A").Value = Cells(i - 1, "A") Then
      Cells(i, "A").Resize(, 2).Value = vntDel
    End If
  Next i
  
  Application.ScreenUpdating = True
  
End Sub

【11863】Re:ダブったデータを先頭行のみ残して削除
お礼  困ったちゃん  - 04/3/17(水) 18:16 -

引用なし
パスワード
   皆さんどうもありがとうございました。

マクロだけでは出来ないこともあり、VBAもまた、色々な書き方が
あるのですね。

どんどん興味がわいてきました。

当面質問ばかりだと思いますが、皆さん宜しくお願いいたしますm(__)m

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