代码之家  ›  专栏  ›  技术社区  ›  ASH

如何逐行向下循环,直到找到空白单元格

  •  0
  • ASH  · 技术社区  · 8 年前

    我在Excel 2010中工作。我试图将值串联在一列中,并在每个单元格之间输入一个字符(10)。所以,我在单元BC2:BC11中工作,我想连接单元BC1中的所有内容

    ActiveCell.FormulaR1C1 = "=R[1]C & CHAR(10) & R[2]C & CHAR(10) & R[3]C & CHAR(10) & R[4]C & CHAR(10) & R[5]C & CHAR(10) & R[6]C & CHAR(10) & R[7]C & CHAR(10) & R[8]C & CHAR(10) & R[9]C & CHAR(10) & R[10]C"
    

    这是可行的,但问题是,数组中的值通常少于10个,所以我得到了一堆换行符堆积在最后,这会把下游的东西搞砸。我想提出一种优雅的方法,循环通过BC2:BC11,并在每个单元格之间使用CHAR(10)组合所有内容。有人能给我一个剧本或者给我指出正确的方向吗?

    谢谢

    2 回复  |  直到 6 年前
        1
  •  2
  •   user3598756    8 年前

    没有循环的可能代码

    With ActiveCell
        .value = Join(Application.Transpose(.Offset(1).Resize(10).value), " ") '<--| change "10" to your actual cells number to be considered below active cell
        .value = WorksheetFunction.Trim(.value) 
        .Replace " ", Chr(10)
    End With
    
        2
  •  1
  •   Kieran    8 年前

    有许多方法可以实现这一点。假设您总是使用BC2:BC11,您可以创建一个简单的for循环来构建字符串,然后将结果输出到活动单元格。

    Dim newString As String
    For i = 2 To 11
    
        If ActiveSheet.Range("BC" & i).Text <> "" Then
            If newString = "" Then
                newString = ActiveSheet.Range("BC" & i).Text
            Else
                newString = newString & Chr(10) & ActiveSheet.Range("BC" & i).Text
            End If
        End If
    
    Next
    
    ActiveCell.Value = newString
    

    希望这有帮助:)