2016-07-06 23 views
0

Excel上にデータを設定しました。列Bから始まり、B3から連続したデータがあり、周期的に大きくなる(今日はB114ですが、明日はB116にデータが拡張される可能性があります)。連続したセルBのデータは決して削除されません。列Bの連続するデータの行ごとに、列B-AGの行も選択します。ただし、Bの後の行には連続データがありません。例えばExcel VBAで変数範囲内の空白でないセルをすべて選択する

:B120へのB3からの連続したデータがあります。範囲B3:AG120を選択したいと思います。私はVBAでこれを行うために書かれている

コードが機能していません。これはB120(この例では)で正しく停止しますが、C-AG列の不連続データに達すると、120を超える行が選択されます。このコードが機能しない理由は何もありません。とても有難い!レコードの

、シート内のほぼすべてのセル内の数式があります。しかし、一部の数式だけがセルにデータを取り込みます。私はそれが私の範囲内にある場合、データが入力されているかどうかにかかわらず、すべてのセルを選択したいと思います。そうでなければ、私はそれを選択したくない。たとえば、B120を過ぎると、空のセルに式が入っています。私はそれらを私の範囲に含めることは望ましくない。しかし、D40に空のセルがある場合(B3とAG120の間にある)、私はそれを選択に含めたいと思います。

Dim LR As Long, cell As Range, rng As Range 
With Sheets("Sortable(2)") 
    LR = .Range("B" & Rows.Count).End(xlUp).Row 
    For Each cell In .Range("B3:B" & LR) 
     If cell.Value <> "" Then 
      If rng Is Nothing Then 
       Set rng = cell 
      Else 
       Set rng = Union(rng, cell) 
      End If 
     End If 
    Next cell 
    rng.Select 
End With 
+0

'.Range( "B" &Rows.Count).END(xlUp).Row'は、数式を用いて細胞をカウントします。 – findwindow

+1

はい、わかります。だから、空であれば範囲に追加しないif文が続かれます – Megan

+0

cell.Value <> "" cell.Value <> ""のinseadを使ってみましたか? – Absinthe

答えて

4
Dim lastVal As Range, sht As Worksheet 

Set sht = Sheets("Sortable(2)") 

Set lastVal = sht.Columns(2).Find("*", sht.Cells(1, 2), xlValues, _ 
           xlPart, xlByColumns, xlPrevious) 

Debug.Print lastVal.Address 

sht.Range("B2", lastVal).Resize(, 32).Select 'select B:AG 
+0

これは完全に機能しました!私はあなたにキスすることができてとても嬉しいです - 私はこれをずっとあまりにも長く苦しんできました – Megan

関連する問題