【问题标题】:How to cut a selection of rows and paste into another workbook & repeat如何剪切选定的行并粘贴到另一个工作簿并重复
【发布时间】:2014-03-12 21:26:27
【问题描述】:

我有一个电子表格,其中一列有 15000 行。我想创建一个脚本来对电子表格中的每个单元格进行颜色编码。我需要的是:

  • RED 中的前 10 个单元格
  • 蓝色的后 5 个单元格
  • 接下来的 5 个单元格为绿色
  • 对从 A1 下降到 A1500 的所有单元格重复此操作...

任何快速的指针?他们让一个管理员女孩手动操作了三天:/

-----编辑

感谢大家的回复,非常有帮助!

但是 - 事实证明我误解了它的全部规模。现在很复杂,因为我意识到需要什么。

我们拥有的是:一个电子表格中的四个工作簿(第 1a 层、第 1b 层、第 1c 层、工作表 1)

脚本需要:

  • 剪切第 1 层的前 10 个单元格并粘贴到 sheet1 A 列中;
  • 剪切第 2 层中的前 5 个单元格并粘贴到 sheet1 列 A;
  • 剪切第 3 层的前 5 个单元格并粘贴到 sheet1 A 列;

  • 按降序对每个工作簿中的所有单元格重复 - 因此最终结果将在 sheet1 列 A 中具有 10-5-5 10-5-5 10-5-5 值等

任何帮助将不胜感激 :) 否则手动..请保存我的理智

【问题讨论】:

  • 一个好的开始是使用Macro Recorder
  • 管理员女孩如果花了三天时间就应该被枪杀。如果她格式化了前 20 行,然后将格式复制并粘贴到接下来的 20 行,她可以将前 40 行的格式复制并粘贴到接下来的 40 行中。然后将前 80 行的格式复制并粘贴到接下来的 80 行中,依此类推。填充所有 1,500 行只需要 9 次这样的加倍。
  • 你应该开始一个新问题,现在它很混乱。 tier1 的数据量是否总是正好是两倍,并且它会以 10 的块完美结束,而其他表的块则为 5

标签: vba excel


【解决方案1】:

这是一个简单的宏来做它

Sub colorRBGRow()

   For X = 0 To 14980 step 20
    Range("A" & X + 1 & ":A" & X + 10).Interior.ColorIndex = 3
    Range("A" & X + 11 & ":A" & X + 15).Interior.ColorIndex = 5
    Range("A" & X + 16 & ":A" & X + 20).Interior.ColorIndex = 4

    Next X
End Sub

【讨论】:

    【解决方案2】:

    您可以使用条件格式:例如,对于第一种颜色(假设您的数据从第 2 行开始)使用公式:

    =AND(MOD(ROW()-1,20)>0,MOD(ROW()-1,20)<11) 
    

    下一个颜色:

    =AND(MOD(ROW()-1,20)>10,MOD(ROW()-1,20)<16)
    

    最后一个比较棘手:

    =OR(MOD(ROW()-1,20)=0,AND(MOD(ROW()-1,20)>15,MOD(ROW()-1,20)<20))
    

    【讨论】:

      【解决方案3】:

      尝试使用此公式和条件格式为单元格着色:

      =CHOOSE(INDEX(MOD(INT((ROW(RC)-1)/5),4),1,1)+1,1,1,2,3)
      

      现在我使用R1C1 模式,而不是A1 模式,因此只需将RC 替换为您正在格式化的单元格,然后将公式复制粘贴到其他单元格中。

      在任何情况下,此公式都会返回代表红色、蓝色和绿色的数字 1、2 或 3。

      然后我将每个单元格格式化为 RED,然后将两种条件格式分别应用于 BLUE 和 GREEN:

      =CHOOSE(INDEX(MOD(INT((ROW(RC)-1)/5),4),1,1)+1,1,1,2,3)=2
      

      还有:

      =CHOOSE(INDEX(MOD(INT((ROW(RC)-1)/5),4),1,1)+1,1,1,2,3)=3
      

      这是我的结果:

      【讨论】:

        【解决方案4】:

        您实际上可以自动填充颜色。您可以使用 VBA 或手动执行此操作。

        VBA:

        Sub Macro1()
            Range("A1:A20").Select
            Selection.AutoFill Destination:=Range("A1:A15000"), Type:=xlFillDefault
        End Sub
        

        在一张空白纸上执行此操作 - 您可以将此颜色格式复制粘贴到您想要的任何单元格上。

        如果您不想进行任何复制粘贴,则可以使用自动填充类型的 xlFillFormats,但它也会覆盖任何其他(非颜色相关)格式:

        Sub Macro2()
            Range("A1:A10").Select
            With Selection.Interior
                .Pattern = xlSolid
                .PatternColorIndex = xlAutomatic
                .Color = 255
                .TintAndShade = 0
                .PatternTintAndShade = 0
            End With
            Range("A11:A15").Select
            With Selection.Interior
                .Pattern = xlSolid
                .PatternColorIndex = xlAutomatic
                .Color = 12611584
                .TintAndShade = 0
                .PatternTintAndShade = 0
            End With
            Range("A16:A20").Select
            With Selection.Interior
                .Pattern = xlSolid
                .PatternColorIndex = xlAutomatic
                .Color = 5287936
                .TintAndShade = 0
                .PatternTintAndShade = 0
            End With
            Range("A1:A20").Select
            Selection.AutoFill Destination:=Range("A1:A109"), Type:=xlFillFormats
        End Sub
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-10-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多