Excel VBA質問箱 IV

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

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


3734 / 76735 ←次へ | 前へ→

【78630】Re:特定の文字列の入っている行を削除したいです
発言  β  - 16/12/2(金) 13:38 -

引用なし
パスワード
   ▼piropiro さん:

【魔の10行】ですかぁ。
不思議ですねぇ。

消されるべきなのに消されないということなら、いろいろ考えられますが
消されるべきではないのに消される・・・

可能性は極めて低いのですが、以下のケースなら、そうなります。

セルに NA という値があったとします。
で、表示書式設定で、文字列の場合に 別文字列 に設定すれば、実際のセルの値とは異なる値が
セルに表示されます。
さらに、ユーザー定義で ;;; と設定すると、セルは空白に見えてしまいます。
なので、【ここにはNAはない!】
ところが 実態は NA ですから、セル比較(そちらのコード)やMATCH で、NA と認識します。
またFindメソッドでも LookIn を xlFormula にするとNAだと認識されます。

で、削除。見た目は NA ではないセルの行が削除されるわけです。
(コード上で LookIn を省略すると、たまたま、そのPCで、その前に行われた Findメソッド、Replaceメソッド
 ないしは 検索や置き換えの操作時のオプションが適用されます)

可能性は低いのですが、以下の確認3 と確認4 の結果は同じになりますか?
それとも10行の差異がありますか?

Sub 確認3()
  Dim a As Range
  Dim r As Range
  Dim c As Range
  Dim f As Range
  Dim x As Long
 
   '使用領域の K列から最終列までの列数
   x = Range("A1", ActiveSheet.UsedRange).Columns.Count - 10
  '判定対象領域
   Set a = Range("I4", Range("I" & Rows.Count).End(xlUp)).Offset(, 2).Resize(, x)
 
   Set c = a.Find(What:="NA", LookAt:=xlWhole, LookIn:=xlValues)
  If c Is Nothing Then
    MsgBox "領域に NA はありません"
    Exit Sub
  End If

   Set f = c

   Do
    If r Is Nothing Then
      Set r = c
    Else
      Set r = Union(r, c)
    End If
    Set c = a.FindNext(c)
  Loop While c.Address <> f.Address

   MsgBox "対象領域の行数は " & a.Rows.Count & "行で、そのなかの削除対象は" & Intersect(r.EntireRow, Columns("K")).Count & "行です"

End Sub

Sub 確認4()
  Dim a As Range
  Dim r As Range
  Dim c As Range
  Dim f As Range
  Dim x As Long
 
   '使用領域の K列から最終列までの列数
   x = Range("A1", ActiveSheet.UsedRange).Columns.Count - 10
  '判定対象領域
   Set a = Range("I4", Range("I" & Rows.Count).End(xlUp)).Offset(, 2).Resize(, x)
 
   Set c = a.Find(What:="NA", LookAt:=xlWhole, LookIn:=xlFormulas)
  If c Is Nothing Then
    MsgBox "領域に NA はありません"
    Exit Sub
  End If

   Set f = c

   Do
    If r Is Nothing Then
      Set r = c
    Else
      Set r = Union(r, c)
    End If
    Set c = a.FindNext(c)
  Loop While c.Address <> f.Address

   MsgBox "対象領域の行数は " & a.Rows.Count & "行で、そのなかの削除対象は" & Intersect(r.EntireRow, Columns("K")).Count & "行です"

End Sub

0 hits

【78620】特定の文字列の入っている行を削除したいです piropiro 16/12/1(木) 12:08 質問[未読]
【78621】Re:特定の文字列の入っている行を削除した... β 16/12/1(木) 13:02 発言[未読]
【78622】Re:特定の文字列の入っている行を削除した... β 16/12/1(木) 13:09 発言[未読]
【78623】Re:特定の文字列の入っている行を削除した... piropiro 16/12/1(木) 13:46 質問[未読]
【78624】Re:特定の文字列の入っている行を削除した... β 16/12/1(木) 15:01 発言[未読]
【78625】Re:特定の文字列の入っている行を削除した... piropiro 16/12/1(木) 15:15 質問[未読]
【78626】Re:特定の文字列の入っている行を削除した... β 16/12/1(木) 15:23 発言[未読]
【78627】Re:特定の文字列の入っている行を削除した... piropiro 16/12/1(木) 15:39 質問[未読]
【78628】Re:特定の文字列の入っている行を削除した... β 16/12/2(金) 11:06 発言[未読]
【78629】Re:特定の文字列の入っている行を削除した... piropiro 16/12/2(金) 11:45 質問[未読]
【78630】Re:特定の文字列の入っている行を削除した... β 16/12/2(金) 13:38 発言[未読]
【78631】Re:特定の文字列の入っている行を削除した... piropiro 16/12/2(金) 14:15 質問[未読]
【78632】Re:特定の文字列の入っている行を削除した... β 16/12/2(金) 17:52 発言[未読]
【78636】Re:特定の文字列の入っている行を削除した... 16/12/2(金) 22:12 発言[未読]
【78645】Re:特定の文字列の入っている行を削除した... piropiro 16/12/3(土) 19:03 質問[未読]
【78650】Re:特定の文字列の入っている行を削除した... piropiro 16/12/5(月) 11:17 質問[未読]
【78651】Re:特定の文字列の入っている行を削除した... β 16/12/5(月) 11:32 発言[未読]
【78653】Re:特定の文字列の入っている行を削除した... piropiro 16/12/5(月) 11:39 質問[未読]
【78654】Re:特定の文字列の入っている行を削除した... β 16/12/5(月) 14:01 発言[未読]
【78655】Re:特定の文字列の入っている行を削除した... piropiro 16/12/5(月) 14:17 質問[未読]
【78656】Re:特定の文字列の入っている行を削除した... β 16/12/5(月) 17:45 発言[未読]
【78657】Re:特定の文字列の入っている行を削除した... piropiro 16/12/5(月) 19:01 お礼[未読]
【78635】Re:特定の文字列の入っている行を削除した... γ 16/12/2(金) 22:11 発言[未読]
【78652】Re:特定の文字列の入っている行を削除した... piropiro 16/12/5(月) 11:35 質問[未読]

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