Excel VBA質問箱 IV

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

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


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

【17730】データーの削除 のり 04/9/6(月) 20:22 質問[未読]
【17732】Re:データーの削除 ichinose 04/9/6(月) 20:49 回答[未読]
【17742】Re:データーの削除 のり 04/9/7(火) 8:19 質問[未読]
【17789】Re:データーの削除 ichinose 04/9/7(火) 18:53 回答[未読]
【17825】Re:データーの削除 のり 04/9/8(水) 14:49 お礼[未読]

【17730】データーの削除
質問  のり E-MAIL  - 04/9/6(月) 20:22 -

引用なし
パスワード
   どなたかマクロを教えてください。
 セルB1〜j100までにデータがあります。
 列B(セルB1〜B100)には番号が入力されていますが
 同一番号が何回も出てきます。

 そこで、同じ番号が出てきた場合行番号の上位行だけ
 残し他の業は削除したいのですが。

 たとえばセルB1に32番
     セルB8に32番
     セルB65に32番
  がある場合
  上位行の行1だけを残し行8と65は削除する。

 お願いします。

 

【17732】Re:データーの削除
回答  ichinose  - 04/9/6(月) 20:49 -

引用なし
パスワード
   ▼のり さん:
こんばんは。
ちょっと前に似たような処理の投稿をしましたが・・・・。

>どなたかマクロを教えてください。
> セルB1〜j100までにデータがあります。
> 列B(セルB1〜B100)には番号が入力されていますが
> 同一番号が何回も出てきます。
>
> そこで、同じ番号が出てきた場合行番号の上位行だけ
> 残し他の業は削除したいのですが。
>
> たとえばセルB1に32番
>     セルB8に32番
>     セルB65に32番
>  がある場合
>  上位行の行1だけを残し行8と65は削除する。
>
> お願いします。
'==========================================================
Sub test()
  Dim rd As Range
  Dim ans As Range
  Set rd = Range("b1:b100")
  With rd.Offset(0, 10)
    .Formula = "=IF(COUNTIF($b$1:b1,b1)>1,b1,"""")"
    .Value = .Value
    On Error Resume Next
    Set ans = Nothing
    Set ans = .SpecialCells(xlCellTypeConstants)
    .Value = ""
   If Not ans Is Nothing Then
     ans.EntireRow.Delete
     End If
   End With
End Sub

尚、L列を作業列として使っています。
確認してください

【17742】Re:データーの削除
質問  のり E-MAIL  - 04/9/7(火) 8:19 -

引用なし
パスワード
   ichinose さん、おはようございます。
早速の回答ありがとうございました。
サンプルで試したら良好です。

実は、使用している表の領域が
セルA12〜AP2233で
削除を判定する番号が入っているセルはE12〜E2233です。
このE列に同一番号が何回も出てきます。
同じ番号が出てきた場合行番号の上位行だけ
残し他の業は削除したいのですが。

再度の教授をお願いします。


▼ichinose さん:
>▼のり さん:
>こんばんは。
>ちょっと前に似たような処理の投稿をしましたが・・・・。
>
>>どなたかマクロを教えてください。
>> セルB1〜j100までにデータがあります。
>> 列B(セルB1〜B100)には番号が入力されていますが
>> 同一番号が何回も出てきます。
>>
>> そこで、同じ番号が出てきた場合行番号の上位行だけ
>> 残し他の業は削除したいのですが。
>>
>> たとえばセルB1に32番
>>     セルB8に32番
>>     セルB65に32番
>>  がある場合
>>  上位行の行1だけを残し行8と65は削除する。
>>
>> お願いします。
>'==========================================================
>Sub test()
>  Dim rd As Range
>  Dim ans As Range
>  Set rd = Range("b1:b100")
>  With rd.Offset(0, 10)
>    .Formula = "=IF(COUNTIF($b$1:b1,b1)>1,b1,"""")"
>    .Value = .Value
>    On Error Resume Next
>    Set ans = Nothing
>    Set ans = .SpecialCells(xlCellTypeConstants)
>    .Value = ""
>   If Not ans Is Nothing Then
>     ans.EntireRow.Delete
>     End If
>   End With
>End Sub
>
>尚、L列を作業列として使っています。
>確認してください

【17789】Re:データーの削除
回答  ichinose  - 04/9/7(火) 18:53 -

引用なし
パスワード
   ▼のり さん:
こんばんは。
遅くなりました(朝、8:15までは見てたんですが・・)

>ichinose さん、おはようございます。
>早速の回答ありがとうございました。
>サンプルで試したら良好です。
>
>実は、使用している表の領域が
>セルA12〜AP2233で
>削除を判定する番号が入っているセルはE12〜E2233です。
>このE列に同一番号が何回も出てきます。
>同じ番号が出てきた場合行番号の上位行だけ
>残し他の業は削除したいのですが。
>
>再度の教授をお願いします。
>
>
>▼ichinose さん:
>>▼のり さん:
>>こんばんは。
>>ちょっと前に似たような処理の投稿をしましたが・・・・。
>>
>>>どなたかマクロを教えてください。
>>> セルB1〜j100までにデータがあります。
>>> 列B(セルB1〜B100)には番号が入力されていますが
>>> 同一番号が何回も出てきます。
>>>
>>> そこで、同じ番号が出てきた場合行番号の上位行だけ
>>> 残し他の業は削除したいのですが。
>>>
>>> たとえばセルB1に32番
>>>     セルB8に32番
>>>     セルB65に32番
>>>  がある場合
>>>  上位行の行1だけを残し行8と65は削除する。
>>>
>>> お願いします。
>>'==========================================================
>>Sub test()
>>  Dim rd As Range
>>  Dim ans As Range
>>  Set rd = Range("b1:b100")
>>  With rd.Offset(0, 10)
>>    .Formula = "=IF(COUNTIF($b$1:b1,b1)>1,b1,"""")"
>>    .Value = .Value
>>    On Error Resume Next
>>    Set ans = Nothing
>>    Set ans = .SpecialCells(xlCellTypeConstants)
>>    .Value = ""
>>   If Not ans Is Nothing Then
>>     ans.EntireRow.Delete
>>     End If
>>   End With
>>End Sub
>>
>>尚、L列を作業列として使っています。
>>確認してください
'==========================================================
Sub test()
  Dim rd As Range
  Dim ans As Range
  Set rd = Range("e12:e2233")
  With rd.Offset(0, 40) 'AS列
    .Formula = "=IF(COUNTIF($e$12:e12,e12)>1,e12,"""")"
    .Value = .Value
    On Error Resume Next
    Set ans = Nothing
    Set ans = .SpecialCells(xlCellTypeConstants)
    .Value = ""
   If Not ans Is Nothing Then
     ans.EntireRow.Delete
     End If
   End With
End Sub

で確認してみて下さい。

【17825】Re:データーの削除
お礼  のり E-MAIL  - 04/9/8(水) 14:49 -

引用なし
パスワード
   ichinoseさんありがとうございました。
朝まで待ってていただいてご迷惑をおかけしました。
台風の対応で返事が送れたことを
深くお詫びいたします。

さて、早速ためさせていただきました。
処理時間が約5分ぐらいかかりますが
良好な結果を得ることができました。

今後活用させていただきます。


▼ichinose さん:
>▼のり さん:
>こんばんは。
>遅くなりました(朝、8:15までは見てたんですが・・)
>
>>ichinose さん、おはようございます。
>>早速の回答ありがとうございました。
>>サンプルで試したら良好です。
>>
>>実は、使用している表の領域が
>>セルA12〜AP2233で
>>削除を判定する番号が入っているセルはE12〜E2233です。
>>このE列に同一番号が何回も出てきます。
>>同じ番号が出てきた場合行番号の上位行だけ
>>残し他の業は削除したいのですが。
>>
>>再度の教授をお願いします。
>>
>>
>>▼ichinose さん:
>>>▼のり さん:
>>>こんばんは。
>>>ちょっと前に似たような処理の投稿をしましたが・・・・。
>>>
>>>>どなたかマクロを教えてください。
>>>> セルB1〜j100までにデータがあります。
>>>> 列B(セルB1〜B100)には番号が入力されていますが
>>>> 同一番号が何回も出てきます。
>>>>
>>>> そこで、同じ番号が出てきた場合行番号の上位行だけ
>>>> 残し他の業は削除したいのですが。
>>>>
>>>> たとえばセルB1に32番
>>>>     セルB8に32番
>>>>     セルB65に32番
>>>>  がある場合
>>>>  上位行の行1だけを残し行8と65は削除する。
>>>>
>>>> お願いします。
>>>'==========================================================
>>>Sub test()
>>>  Dim rd As Range
>>>  Dim ans As Range
>>>  Set rd = Range("b1:b100")
>>>  With rd.Offset(0, 10)
>>>    .Formula = "=IF(COUNTIF($b$1:b1,b1)>1,b1,"""")"
>>>    .Value = .Value
>>>    On Error Resume Next
>>>    Set ans = Nothing
>>>    Set ans = .SpecialCells(xlCellTypeConstants)
>>>    .Value = ""
>>>   If Not ans Is Nothing Then
>>>     ans.EntireRow.Delete
>>>     End If
>>>   End With
>>>End Sub
>>>
>>>尚、L列を作業列として使っています。
>>>確認してください
>'==========================================================
>Sub test()
>  Dim rd As Range
>  Dim ans As Range
>  Set rd = Range("e12:e2233")
>  With rd.Offset(0, 40) 'AS列
>    .Formula = "=IF(COUNTIF($e$12:e12,e12)>1,e12,"""")"
>    .Value = .Value
>    On Error Resume Next
>    Set ans = Nothing
>    Set ans = .SpecialCells(xlCellTypeConstants)
>    .Value = ""
>   If Not ans Is Nothing Then
>     ans.EntireRow.Delete
>     End If
>   End With
>End Sub
>
>で確認してみて下さい。

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