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->粘贴特殊->格式,使用“粘贴格式”。
如果您使用的是条件格式,您也可以只备份文件2并将文件1粘贴到文件2中,同时只保留文本(ctrl-paste选项之一)。如果您对在两个文档中添加几个辅助列感到满意,您可以使用以下解决方案 请注意,下面的解决方案演示了两张表格中的数据 在同一文档中。您可以轻松地将相同的逻辑应用于 不同的文件 假设:
- 两个文档中的列数保持不变
- 你在寻找一个完全匹配的
=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
=IFERROR(匹配(G2,'document 1'!$G$1:$G$5,0),0)从document1中标识相应的行号。如下所示
注意:如果未找到匹配项,则为0
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)
公共子副本\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
如果结束
接下来我
端接头
代码的速度取决于有多少单元格是彩色的 你必须调整它以适应你的需要
选项显式
“学分: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
如果结束
下一个源单元
'检入目标范围
变暗目标电池作为射程
暗源