Excel:将颜色填充从一个文档转移到另一个文档

Excel:将颜色填充从一个文档转移到另一个文档,excel,colors,formula,Excel,Colors,Formula,我有两个文档有一些相同的行(有些行是不同的)。在Document1中,我处理文件并为某些行(或单元格)着色。 如何切换到Documnent2并以相同的方式为Document1中的行(单元格)着色?有可用的解析器吗 例如: Doc1: 1 a 1 2 3 4 # is full colored 2 b 1 3 6 7 3 c 1 1 1 2 # is full colored Doc2: 1 c 1 1 1 2 2 a 1 2 3 4 3 d 5 6 8 1 4

我有两个文档有一些相同的行(有些行是不同的)。在
Document1
中,我处理文件并为某些行(或单元格)着色。
如何切换到
Documnent2
并以相同的方式为
Document1
中的行(单元格)着色?有可用的解析器吗

例如:
Doc1

1   a 1 2 3 4  # is full colored
2   b 1 3 6 7
3   c 1 1 1 2  # is full colored
Doc2

1   c 1 1 1 2
2   a 1 2 3 4
3   d 5 6 8 1
4   b 1 3 6 7
我需要用索引1和索引2为行着色,因为它们与
Doc1
中的相同,并且是全色的

如果我使用
格式画师
,我会将第一行和第三行着色,但这对我来说是错误的

我看到了类似于公式的解决方案,它通过行字母进行检查,是否着色,并为其他文档中的行字母着色。但我不知道如何编码:(

另外,我在获取单元格颜色方面也有问题-
GET.cell(63,间接(“rc”,FALSE))
对我不起作用,找不到
GET.cell()
函数

p.p.S.两个文档都太大(超过1.000.000行),因此我认为最好的解决方案是公式(宏通常太慢)。

两个选项:

  • 使用格式画师(标记要复制格式的单元格,单击格式画师图标,切换到文档2,选择要粘贴格式的单元格)

  • 使用Ctrl-C->转到文档2->粘贴特殊->格式,使用“粘贴格式”。


如果我正确理解您的问题:您只想将格式从excel文件2复制到excel文件1,同时保留信息

  • 从文件2中复制所有内容
  • 将其粘贴到文件1中,然后按ctrl键。选择左下角选项仅保留格式

  • 如果您使用的是条件格式,您也可以只备份文件2并将文件1粘贴到文件2中,同时只保留文本(ctrl-paste选项之一)。

    如果您对在两个文档中添加几个辅助列感到满意,您可以使用以下解决方案

    请注意,下面的解决方案演示了两张表格中的数据 在同一文档中。您可以轻松地将相同的逻辑应用于 不同的文件

    假设:
    • 两个文档中的列数保持不变
    • 你在寻找一个完全匹配的
    解决方案: 您可以通过以下解决方案从下载示例excel文档

  • 使用
    =TEXTJOIN(“,”,FALSE,B2:E2)
    在两个文档中创建一个辅助列(G),该列是所有现有列的串联,如下所示:

        A B C D E F -----G-------
    1   a 1 2 3 4   a, 1, 2, 3, 4
    2   b 1 3 6 7   b, 1, 3, 6, 7
    3   c 1 1 1 2   c, 1, 1, 1, 2
    
  • document2中创建另一列(H),该列将使用
    =IFERROR(匹配(G2,'document 1'!$G$1:$G$5,0),0)从document1中标识相应的行号。如下所示
    
    注意:如果未找到匹配项,则为0

  • 在任何单元格中添加一个公式,该公式将计算document2中应检查的行总数

        A B C D E F -------G-----    H
    1   c 1 1 1 2   c, 1, 1, 1, 2    3
    2   a 1 2 3 4   a, 1, 2, 3, 4    1
    3   d 5 6 8 1   d, 5, 6, 8, 1    0
    4   b 1 3 6 7   b, 1, 3, 6, 7    2
    5
    6               =COUNTA(G1:G4)
    
  • 添加这些列后,您可以使用这些列循环查看document2中的行,查看document1中是否存在匹配项,如果存在匹配项,则使用以下代码复制格式:

    公共子副本\u格式()
    '堆栈溢出问题:https://stackoverflow.com/questions/65194893/excel-transfer-color-filling-from-one-document-to-another
    Dim Curr_Range作为Range,Match_Value作为Integer,Rows_to_loop作为Integer
    行到循环=表2.范围(“G6”).值
    对于i=1到行\u到\u循环
    设置电流范围=表2.范围(“B1:E1”).偏移量(i,0)
    匹配值=表2.范围(“H1”).偏移量(i).值
    如果匹配值>0,则
    表1.范围(“B1:E1”).偏移量(匹配值-1).复制
    带Curr_系列内饰
    .Pattern=xlNone
    .TintAndShade=0
    .PatternTintAndShade=0
    以
    Curr_Range.Paste特殊粘贴:=xlPasteFormats,操作:=xlNone_
    SkipBlanks:=False,转置:=False
    Application.CutCopyMode=False
    如果结束
    接下来我
    端接头
    
  • 签出显示结果的以下GIF:

    代码的速度取决于有多少单元格是彩色的

    你必须调整它以适应你的需要

    选项显式
    “学分:https://stackoverflow.com/a/30067221/1521579
    “学分:https://www.mrexcel.com/board/threads/vba-to-compare-rows-in-two-different-sheets-and-if-they-match-highlight-in-red.1067232/
    子检查行()
    暗淡的开始时间是双倍的
    模糊的二次选择为双色
    开始时间=计时器
    将源表设置为工作表
    设置sourceSheet=ThisWorkbook.Worksheets(“Sheet1”)
    将目标文件设置为工作簿
    设置targetFile=ThisWorkbook的工作簿(“文件2”)
    暗靶板
    设置targetSheet=targetFile.Worksheets(“Sheet2”)
    与最后一行一样长
    sourceLastRow=sourceSheet.Cells(sourceSheet.Rows.Count,“A”).End(xlUp).Row
    将源范围变暗为范围
    Set sourceRange=sourceSheet.Range(“A1:E”和sourceLastRow)
    暗淡的目标和长的一样
    targetLastRow=targetSheet.CELL(targetSheet.Rows.Count,“A”).End(xlUp).Row
    变暗目标范围作为范围
    设置targetRange=targetSheet.Range(“A1:E”和targetStarRow)
    作为对象的Dim tempDict
    Set tempDict=CreateObject(“scripting.dictionary”)
    暗淡的单元格串成字符串
    '将第一个范围添加到dict
    暗淡源单元格作为范围
    将源计数器设置为长
    对于sourceRange.Columns(1.Cells)中的每个sourceCell
    sourceCounter=sourceCounter+1
    '检查单元格是否有颜色
    如果sourceCell.Interior.Color 16777215,则
    cellsString=Join(Application.Index(sourceCell.Resize(,sourceRange.Columns.Count).Value,1,0),“|”)
    tempDict.item(cellsString)=sourceCell.Interior.Color
    如果结束
    下一个源单元
    '检入目标范围
    变暗目标电池作为射程
    暗源