首页 > 解决方案 > 连接单元格(在循环中使用变量)并在 VBA 中保持填充颜色

问题描述

我有一个看起来像这样的 excel 文件:

在此处输入图像描述

所以我在工作表中有这些矩阵(假设这是 Sheet1)。我有很多类似的床单。我需要在另一张表中得出结果,结果如下所示:

4500
4501
4502
4503
4504
4505
4506
4507
4508
4509
4510
4511
.
.
.
4599

所以我需要连接单元格才能得到上述结果。在我的示例中,假设数字“45”位于合并单元格 A1、B1、C1、D1、E1、F1、G1、H1、I1、J1 上。在该矩阵中,标题为“45”:

连接很简单。(或不...)
我制作了一张新工作表(Sheet2),制作了一个命令按钮并输入了以下代码:

Range("A1").Value = Worksheets("Sheet1").Range("A1") & Worksheets("Sheet1").Range("A2")
Range("A2").Value = Worksheets("Sheet1").Range("A1") & Worksheets("Sheet1").Range("B2")
and so on, which works, but i would like something with variables... 

但我是 VBA 的新手,不太明白如何才能不编写数百行代码......

另一个(大)问题是我需要保留参与连接的最后一个单元格的颜色。
示例:
For "4500" the colour in the results sheet must be blue.
For "4555" the colour in the results sheet must be white.
For "4580" the colour in the results sheet must be yellow.
所以我需要保持准确的索引颜色。

我需要做这些连接并保持每个矩阵的颜色。我不知道如何保持颜色..我使用了Interior.ColorIndex的东西,但我在连接之后手动放置了它..这对我的情况不起作用,因为这个excel文件非常大。

我想我需要做一个循环并连接并同时保持颜色。

我是 VBA 的新手,但我觉得这很有趣。非常感谢任何帮助。先感谢您!

标签: excelvba

解决方案


循环块的粗略轮廓:

    Dim rng As Range, c As Range, cDest As Range, hdr
    
    Set cDest = ThisWorkbook.Sheets("Data").Range("a2")
    
    Set rng = ActiveSheet.Range("B2:K11")
    hdr = rng.Cells(1).Offset(-1, 0).Value 'header
    For Each c In rng.Cells
        With cDest
            .Value = hdr & c.Text
            .Interior.Color = c.Interior.Color
        End With
        Set cDest = cDest.Offset(1, 0)
    Next c

推荐阅读