Excel条件格式

我有一个关于macros基于以下要求的macros查询

我想要实现的事情是:

1:工作表1将包含我的数据input(示例)

ABCDE 1 2 3 4 5 3 5 5 

如表1所示,包含5列3行(row1包含列名,row2和row3包含数据值)。

2:我需要检查工作表1中的列名是否出现在工作表2中的值(工作表2包含列1中的以下值)

 A E 

3:首先检查sheet1的row1的任何值(在我的例子中列名是A,B,C,D,E)是否与sheet2中存在的任何列名匹配(在我的情况下是A,E)

4:如果find匹配,请检查以下内容(在我的情况下find列A和E)。

5:在这种情况下,我想标记与这些列相对应的值,也就是说,如果它们包含任何值,那么它们应该被标记(这可以被突出显示或移动到另一个表格中)。只允许空值

6:所以在我的例子中,row2应该被移动到不同的工作表中,或者A和E下的值应该被突出显示,或者整行被移动到工作表3中

我更像是一名ETL人员和一名excel新手,但是试图通过macros来实现自动化。寻找一种如何实现这一点的方法

我已经尝试的方法

1:将来自sheet1的列名称的值粘贴到新的工作表3中,并粘贴为转置

2:使用vlookup将这些值与sheet2值进行比较

3:每当发现匹配时,使用相等的操作来比较单元格值并生成布尔返回值

在此之前,我继续我想检查我的方法是否正确! 欣赏你的投入家伙

PS:我不是在找人写整个代码,而是在VBE中处理上述场景的通用方法

尝试这个:

 Sub Demo() Dim lastRow As Long, colNum As Long, i As Long Dim inputRng As Range, checkRng As Range, rngFound As Range Dim inputWS As Worksheet, checkWS As Worksheet 'assigning worksheets to variable Set inputWS = ThisWorkbook.Sheets("Sheet1") Set checkWS = ThisWorkbook.Sheets("Sheet2") 'setting the range of both worksheets Set inputRng = inputWS.Range("A1").CurrentRegion Set checkRng = checkWS.Range("A1:A" & checkWS.Cells(Rows.Count, "A").End(xlUp).Row) For Each cel In checkRng 'find Sheet2 values in Row1 of Sheet1 Set rngFound = inputWS.Rows(1).Find(cel.Value) If Not rngFound Is Nothing Then 'get the column number if value found colNum = rngFound.Column lastRow = inputWS.Cells(Rows.Count, colNum).End(xlUp).Row 'loop through the entire column to find non-empty cells For i = 2 To lastRow If Not IsEmpty(inputWS.Cells(i, colNum)) Then inputWS.Cells(i, colNum).Interior.Color = vbRed End If Next i End If Next End Sub 

见图像以供参考:

在这里输入图像说明

你从来没有真正说过你想用数据做什么。 此代码将突出显示无效的单元格。

 Sub HighlightInvalidData()
     Dim rData As Range,rCheck As Range,c As Range,target As Range
    昏暗我只要
    设置rData = Sheet1.Range(“A1”)。CurrentRegion
    设置rCheck = Range(Sheet2.Range(“A1”),Sheet2.Range(“A”&Rows.Count).End(xlUp))

    对于i = rData.Rows.Count为2步-1

        对于每个c在rCheck中
             Set target = rData.Rows(i).Columns(c.Text)
            如果不是空(目标)那么
                突出显示无效的数据
                 target.Interior.Color = vbRed
            万一
        下一个

    下一个

结束小组

您可以使用高亮显示无效行

 'Highlight Invalid Row Sheet1.Rows(target.Row).Interior.Color = vbRed 

我从最后一行迭代到第一行。 这样,您可以根据需要删除行。

 'Delete Row target.EntireRow.Delete