如何遍历列中的范围并使用 VBA 水平粘贴非空白结果?

问题描述

我目前正在尝试遍历一系列单元格,以确定该单元格是否为空白。如果它为空白和/或法律债务字段有“否”指示符,我将移至下一个单元格,但是如果该单元格中填充了数据并且法律债务具有“是”指示符,我希望能够获取该值并将其粘贴到另一个单元格中,但是我需要将其水平粘贴。因此,根据下表,假设范围以“A1:A3”结束,我希望将数据水平粘贴如下: A4 = $1450.00,B4 = 空白,C4 = $325.00 等等。我只能让我的代码拉出第一个单元格值,而不是遍历整个列。提前致谢!

法律债务(A) Adj_month_amt (B) C 列
$1450.00 --------
没有 $1275.75 --------
$325.00 --------
Dim cell as Range

For Each cell In ws_loans.Range("N3:N22")
If cell <> "" And Cells(3,0).offset(0,1) <> "No" Then
    ws_loans.Range("N3").copy ws_loans.Range("C49").Offset(0,1)
End If
Next

解决方法

只使用 For loop 更好,因为您只需要检查列 Law Debt (A)

如果 value 不等于 Yes,那么什么都不做,它会跳过单元格

Dim ws_loans As Worksheet
Dim i,j As Integer
Dim rowcount As Integer
Set ws_loans = Sheets(1) 'Assume your worksheet is sheets(1)
rowcount = ws_loans.Range("A1:A4").Rows.Count 'change range("A1:A4") to your testing area
Dim cell As Range


For i = 0 To rowcount - 1

   With ws_loans
   
      'Change Range("A1") to your first top cell of your testing area
      If .Range("A1").Offset(i,0).Value = "Yes" Then
          
         'Loop the last row
         For Each cell In .Range(.Range("A1").Offset(rowcount,0),.Range("A1").Offset(rowcount,rowcount - 1))
             
             'If cell value is empty,paste the value to it and exit for each loop
             If cell.Value = "" Then
             
                .Range("A1").Offset(i,1).Copy cell
                
                Exit For
                
             End If
             
         Next
         
      End If
      
   End With
   
Next i
,

如果我正确理解您的查询,下面是我的代码,希望它能解决您的要求。我附上了图片,以便我了解您的数据安排。请试试这个,让我知道你的反馈。该代码在我的数据上进行了测试。我添加了不言自明的评论。

Your data arrangement

$HOME/wekafiles/props

Your data arrangement