如何在循环中引用单元格?

时间:2019-07-12 18:47:35

标签: excel vba

我在查找字符串“是”时循环浏览。如果找到了字符串,我想将单元格中的值复制到它左侧的一列中,并将其粘贴到另一个工作表中。

我正在苦苦挣扎的代码部分是引用包含字符串“ Yes”的单元格偏移量。代码不只是像ActiveCell.Offset(-1,0)这样的代码吗?

我可能会以错误的方式思考,因此我愿意接受建议。

Sub This_One_Will_Work()

Dim Y_N_Column As Integer, LastColumn As Integer, CurrentRow As Integer, LastRow As Integer, New_Market_Tracker As Range
'need ActiveRow as variable and for it to go up 3 times

Y_N_Column = 2
Last_Open_Row = ThisWorkbook.Worksheets("Markets to Open").UsedRange.Rows.Count
Last_Tracker_Row = ThisWorkbook.Worksheets("Market Tracker").UsedRange.Rows.Count
Set New_Market_Tracker = ThisWorkbook.Worksheets("Market Tracker Template").Range("A1:T1")
'ActiveCell = cell with the offset the "Yes" cell in the Y_N_Column


Do While Y_N_Column <= Last_Open_Row
    If ThisWorkbook.Worksheets("Market to Open").Cells(1, Y_N_Column).Value = "Yes" Then
        ActiveCell.Offset(0, -1).Copy Sheet6.Range("A1").Offset(Last_Tracker_Row, 0)
        'End If
    End If

Y_N_Column = Y_N_Column + 1

Loop

End Sub

3 个答案:

答案 0 :(得分:1)

Sub This_One_Will_Work()

Dim Y_N_Column As Long, Last_Tracker_Row As Long, Last_Open_Row As Long
Dim LastRow As Integer, New_Market_Tracker As Range

Y_N_Column = 2
Last_Open_Row = ThisWorkbook.Worksheets("Markets to Open").UsedRange.Rows.Count
Last_Tracker_Row = ThisWorkbook.Worksheets("Market Tracker").UsedRange.Rows.Count
Set New_Market_Tracker = ThisWorkbook.Worksheets("Market Tracker Template").Range("A1:T1")


Do While Y_N_Column <= Last_Open_Row
    With ThisWorkbook.Worksheets("Market to Open")
        If .Cells(1, Y_N_Column).Value = "Yes" Then
            Sheet6.Cells(Last_Tracker_Row+1, 1).Value = .Cells(1, Y_N_Column-1).Value
        End If
    End With
    Y_N_Column = Y_N_Column + 1
Loop

End Sub

答案 1 :(得分:1)

您需要VBA吗?您可以使用公式:

=INDEX($A$2:$A$7,SMALL(IF(B$2:B$7="Yes",ROW(A$2:A$7)-ROW(A$2)+1),ROWS(A$2:A2)))

A范围是您要提取的数据,B范围是您的“是”: enter image description here

使用 CTRL + SHIFT + ENTER 输入作为数组公式,然后向下拖动。

(您可以将该公式包装在IFERROR([formula],"")中,以隐藏用尽匹配项时出现的#NUM!错误。)

答案 2 :(得分:0)

这是我要实现的目标的答案:

formattingDate()