2017-06-02 8 views
1

特定のテーブルの列の最後のエントリを別のシートに配置してマスターシートリストに貼り付けるためのスクリプトがあります。それは "B列で最後に使用された行を見つける"として動作していますが、たとえ空白であっても使用された行としてカウントされるため、テーブルの行は明らかに空白になります。最後の行の代わりにテーブルのこれらのシートに複数の積み重なったテーブルがあることに注意することも重要ですが、各テーブルはB列に1つの値しか持たず、最新のものを探しています。テーブルの列の最後の値をコピーします。その下に空のテーブルの行はありません

空白のテーブル行を使用行としてカウントしないようにExcelに指示する方法はありますか?私は、たとえ最後のテーブル行でなくても、最後の値をB列に戻すことにのみ関心があります。

Dim rng As Range 
Dim cell As Range 
Dim result As String 
Dim result_sheet As Long 
Dim LastRow As Long 


Set rng = Range("A2:A200") 

For Each cell In rng 

result = cell.Value 

LastRow = Worksheets(result).Cells(Worksheets(result).Rows.Count, "B").End(xlUp).row 
cell.Offset(0, 1).Value = Worksheets(result).Range("B" & LastRow).Value 

Next cell 

答えて

1

は、ここに1つの方法

Sub Sample() 
    Dim ws As Worksheet 
    Dim tmplRow As Long, lRow As Long, i As Long 

    '~~> Change this to the relevant sheet 
    Set ws = Sheet1 

    With ws 
     tmplRow = .Range("B" & .Rows.Count).End(xlUp).Row 

     For i = tmplRow To 1 Step -1 
      If Len(Trim(.Range("B" & i).Value)) <> 0 Then 
       lRow = i 
       Exit For 
      End If 
     Next i 

     If lRow = 0 Then lRow = 1 

     MsgBox "The last row is " & lRow 
    End With 
End Sub 

スクリーンショット

enter image description here

そして、もう一つの方法である

Sub Sample() 
    Dim ws As Worksheet 
    Dim tbl As ListObject 
    Dim lRow As Long, endRow As Long, startRow As Long, i As Long 

    '~~> Change this to the relevant sheet 
    Set ws = Sheet1 

    With ws 
     '~~> Change this to the relevant table number 
     Set tbl = .ListObjects(1) 

     endRow = tbl.Range.Rows.Count 
     startRow = tbl.Range.Row 

     For i = endRow To startRow Step -1 
      If Len(Trim(.Range("B" & i).Value)) <> 0 Then 
       lRow = i 
       Exit For 
      End If 
     Next i 

     MsgBox lRow 
    End With 
End Sub 
関連する問題