【问题标题】:Copy row name that has multiple rows of data under it without that name into new column for each row under that row name将具有多行数据但没有该名称的行名称复制到该行名称下的每一行的新列中
【发布时间】:2019-05-21 05:08:10
【问题描述】:

Example of what I'm working with

我得到这个工作表,在上面的链接中显示,每个月都有数千行。您可以看到第 11、16、21 和 26 行有蓝色文本。我想制作一个 VBA 宏,它将 B11 的名称复制到 A12:A15,B16 到 A17:A20 等等。有任何想法吗?非常感谢您的帮助!

【问题讨论】:

  • 欢迎来到 SO ;) 请在 how to ask a good question 上阅读这篇文章。这将包括对您要实现的目标的正确描述、您的代码(或相关的 sn-ps)以及显示您迄今为止尝试过的内容和可能的错误消息的努力。还建议提供完整的MCVE..
  • 主要问题是我以 So 这个词开头的问题吗?我对我想要达到的目标的描述是否不够明确?我并不是问这些问题很难,我只是想更好地了解您对我的帖子的主要问题是什么。我已经阅读了您发布的链接。另外,我是 VBA 的新手,几乎不知道如何编写 VBA 代码。我问了这个问题,看看是否有人愿意帮助我编写可以实现我想要的代码。如果这样的问题在这里不受欢迎,那么我很抱歉。

标签: excel vba


【解决方案1】:

这将帮助您入门...还可以考虑创建范围对象并使用 For Each,这样您就不必物理选择单元格(这种方式只是更快地编写):

Sub NameToLeft()
    Dim roomName As String
    Range("B1").Select
    While Range("B" & ActiveCell.Row) <> ""
        If Range("B" & ActiveCell.Row).Font.Color = RGB(0, 0, 255) Then
            roomName = Range("B" & ActiveCell.Row)
        Else
            With Range("A" & ActiveCell.Row)
              .Value = roomName
              .Font.Color = RGB(0, 0, 255)
            End With
        End If
        ActiveCell.Offset(1, 0).Select
    Wend
End Sub

【讨论】:

  • 而且我不知道您的颜色是否准确...您可以通过转到颜色选择器并选择“...更多颜色”来确定您的 RGB 代码。
  • 此方法还假设您的数据没有间隙。您可以使用 range("B100000").End(xlUp).row 来查找数据的最后一行,并更改您的 while 语句直到到达该行。
  • 有些人更喜欢其他技术来查找最后一行link ...我建议的那个只是我习惯使用的那个。
  • 非常感谢!这就像一个魅力。非常感谢您提供时间和专业知识来帮助我。
猜你喜欢
  • 2021-02-17
  • 2019-06-24
  • 2018-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-02
  • 1970-01-01
相关资源
最近更新 更多