使用循环将单元格的值复制到多个单元格中

时间:2014-10-30 22:13:03

标签: excel-vba vba excel

我需要找出一种方法将单元格的值复制到工作表中的其他单元格。我正在考虑循环,但我不知道该怎么做。

例如,我希望我的循环从单元格“B16”开始,遍历B列中的每个单元格,直到它到达具有值“Automation Table:”的单元格。在这之间,如果一个单元格包含任何值/字符串,那么它应该从其当前位置移动5列并将值“Hello”分配给该单元格。

这是我目前所拥有的,但它不能正常工作:

Sub TC_data()
  Dim x As String
  Dim found As Boolean
  ' Select first line of data.
  Range("B16").Select
  ' Set search variable value.
  x = "*string*"
  ' Set Boolean variable "found" to false.
  found = False
  ' Set Do loop to stop at a non-empty cell.
  Do Until ActiveCell.Value = "Automation Table:"
  'Do Until IsEmpty(ActiveCell)
     ' Check active cell for search value.
     If ActiveCell.Value = x Then
        ActiveCell.Offset(0, 5).Select
        ActiveCell.Offset(0, 5).Value = "Hello"
        found = True
        Exit Do
     End If
     ' Step down 1 row from present location.
     ActiveCell.Offset(1, 0).Select
  Loop
End Sub

它忽略了所有其他语句,只是使用值“Automation Table:”

进入单元格

1 个答案:

答案 0 :(得分:0)

您应该尽可能避免使用.Select支持直接的单元格和范围引用。

Sub B2AutoTable()
    Dim b As Long, bat As Long, x As String
    bat = Application.Match("Automation Table:", Columns(2), 0) - 1
    x = LCase("*String*")
    For b = 16 To bat
        'this option is for a pattern match to x
        If LCase(Cells(b, "B").Value) Like x Then Cells(b, "G") = "ahoj"
        'the next line is for any value or string
        'If CBool(Len(Cells(b, "B").Value)) Then Cells(b, "G") = "ahoj"
    Next b
End Sub

我给了您两个选项,因为您的描述似乎与您发布的代码段不同。

这假定自动化表:值在B列的某个位置,最好在第16行以下。如果这不是绝对确定的,则必须进行一些错误控制。如果您遇到问题,请回复您的尝试,我会尽力帮助。