【问题标题】:VBA Loop search by text,offset then incremntVBA循环搜索文本,偏移然后递增
【发布时间】:2017-05-25 23:01:51
【问题描述】:

我已经搜索了超过 3 天来构建我需要的这个 VBA 宏,所以我非常感谢任何帮助。我想构建一个带有循环的宏,它将搜索某些固定文本(这将是我的参考步骤文本)在一列中让我们说它是 C 列,一旦它发现文本将偏移到 B 列左侧的下一个单元格,并且该单元格将有一个变量文本,我想复制到下一个之前C的文本步骤。我认为宏将通过进行双循环,首先循环搜索C列中的文本,一旦找到它将偏移到B列的相邻单元格,然后另一个循环复制和粘贴列单元格的值B 一直到 C 的下一个文本步骤之前,将在所有列 c 上执行第一个循环。我对第一个循环的尝试非常成功,因为我试图通过将某些文本识别为布尔值或使用 For Each 循环来实现它。但我最难的部分总是在第二个循环中,在 C 列的下一步之前将 B 列的文本递增到单元格,并将两个循环相互关联。 以下是我的试验,如果您能提供帮助,我将不胜感激。

    Sub test()

    Dim i As Long

    Dim ilastrow As Long

    Dim n As string

    ilastrow = Range("C1").End(xlDown).Row
Dim r As Range, cell As Range
Set r = Range("C1").End(xlDown).Row

For Each cell In r
        If cell.Value = "TH" Then
   ActiveCell.Offset(rowOffset:=0, columnOffset:=-1).Activate
n = ActiveCell.Value
'from here I want to copy n down to every cell until before next "TH" in column C then proceed with next "TH" as n will be changed and so on for all "TH" in Colmun C 

End If
    Next
End Sub

what I want to do with picture

任何帮助将不胜感激提前感谢:)

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    这应该做你想做的:

    Option Explicit
    
    
    Sub test()
    
      Dim sht As Worksheet
      Set sht = ActiveSheet
    
      With sht
        Dim ilastrow As Long
        ilastrow = .Cells(.Rows.Count, "C").End(xlUp).Row
    
        Dim r As Range, cell As Range, prevCell As Range
        Set r = .Range("C1:C" & ilastrow)
    
        Set prevCell = Nothing
        For Each cell In r
          If cell.Value = "TH" Then
            If Not prevCell Is Nothing Then
              prevCell.Offset(1, -1).Resize(cell.Row - prevCell.Row - 1, 1).Value = prevCell.Offset(, -1).Value
              Set prevCell = cell
            Else
              Set prevCell = cell
            End If
          End If
        Next
    
        ilastrow = .Cells(.Rows.Count, "A").End(xlUp).Row
        prevCell.Offset(1, -1).Resize(ilastrow - prevCell.Row, 1).Value = prevCell.Offset(, -1).Value
    
      End With
    
    End Sub
    

    【讨论】:

    • 效果很好,非常感谢您的帮助,我遇到的唯一问题是在“C”列的最后一个“TH”处停止,并且不会继续到最后一个“TH”旁边的上一个单元格”在“B”栏中。如果您可以修改它以继续到 B 列中的最后一个单元格并将其复制到 anthor 列中的最后一个单元格,如“A”列,甚至到“B”列的最后一个单元格。在此先感谢:)
    • 当您说won't proceed to the previous cell next to last "TH" in column "B" 时,您的意思是您还想像在B 列中那样复制A 中的单元格吗?如果您发布您想要的图片,我应该能够相应地更改代码。
    • Thanksssssssss 非常好用,您的帮助非常适合 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-25
    • 1970-01-01
    • 2018-05-04
    • 2018-12-02
    • 2015-09-29
    • 2016-04-29
    • 1970-01-01
    相关资源
    最近更新 更多