2016-11-07 8 views
1

Aの列に100の行があるとします。 90にはコンテンツが含まれています。100は、A100より小さい)のすべてのセルの合計です(空白は9を除く)。Excel VBA:* content *を使って*最後の*行を検索するには?

次に、コンテンツと最後の行が行95であると仮定する。 VBAコードを書くときにどのように見つけることができますか?

私は内容がある最後の行を見つける方法を知っています。そのためのコードは次のとおりです。

LastCellA = .Cells(.Rows.Count, "A").End(xlUp).Row 

ご覧としてだけで、仕事をしないであろう1を差し引きます。だから、解決策は何ですか?

答えて

1

を試してみてくださいここで私はそれを行うだろう方法は次のとおりです。

Function findSecondLastRow(sht As Excel.Worksheet, colLetter As String) As Long 

    Dim LastCell As Long, SecondLastCell As Long 

    With sht.Columns(colLetter) 
     LastCell = .Range(colLetter & .Rows.Count).End(xlUp).Row 
     If .Range(colLetter & LastCell - 1) = vbNullString Then 
      SecondLastCell = .Range(colLetter & LastCell).End(xlUp).Row 
     Else 
      SecondLastCell = LastCell - 1 
     End If 
    End With 

    findSecondLastRow = SecondLastCell 

End Function 

関数を呼び出しシート参照とファイルをパラメータとして渡すことによりあなたは一定の数値値との最後のセルに興味を持っていると仮定すると、この

を試みることができる

Debug.Print findSecondLastRow(ActiveSheet, "A") 
-1
mybottom = .Cells(.Rows.Count, "A").End(xlUp).Row 
lastcellA = .cells(mybottom -1,"A").end(xlup).row 
+0

ギャップがない場合、これは機能しません。私のテストワークシートでは、1〜10行に1〜10の数字を埋めました。簡単に行10を見つけることができますが、次の行は行が見つからないため、行1が見つかりません。 – tjb1

-1

これが第二の最後の非空のセルに

LastCellA = .Cells(.Rows.Count, "A").End(xlUp).Row 

SecondLastCellA = LastCellA - 1 
Do While .Cells(SecondLastCellA, "A") = "" 
    SecondLastCellA = SecondLastCellA - 1 
Loop 
+0

他の答えと同じ問題は、データに途切れがない限り、一番上の行のデータを返します。 – tjb1

0

を見つけるでしょう。この

lr = .Cells(.Cells(.Rows.Count, 1).End(xlUp).Row - 1, 1).End(xlUp).Row 
0

検索欄、例えば:のtter(すなわち、あなたは定数値(すなわち、テキストおよび/または数値ではなく、その後)式から、との最後のセルに興味があるならないテキストやかではない式)

Function MyLastCellRow(ws As Worksheet, colIndex As Long) As Long 
    With ws.Columns(colIndex).SpecialCells(xlCellTypeConstants, xlNumbers) 
     With .Areas(.Areas.Count) 
      MyLastCellRow = .cells(.Rows.Count).Row 
     End With 
    End With 
End Function 

はちょうど取ること, xlNumbersオフSpecialCells(xlCellTypeConstants, xlNumbers)

から
関連する問題