我有一个电子表格,其中包含许多列,我希望识别所有列中常见的所有行。无论是通过突出显示还是创建另一个列,我都没有偏好。同样,公式或宏也同样可以接受。
举个例子,
-------------------------------------- | List 1 | List 2 | List 3 | List 4 | -------------------------------------- | Bill | Carlos | Adam | Adam | | Carlos | Dan | Bill | Carlos | | Frank | Frank | Carlos | Frank | | | Gerard | Frank | Liam | | | | Jim | | --------------------------------------
在上面的示例中,我想确定Carlos和Frank在所有列中都很常见。
请注意,所有列都已排序且唯一。
我目前通过macro整理了这些项目,这些项目跨列对齐。我从这一点开始假设使用conditional formatting突出显示所有空白行很容易但是无法完成此操作。也许我会以错误的方式去做它。
宏代码:
Option Explicit
Sub LineEmUp()
'Author: Jerry Beaucaire
'Date: 7/5/2010
'Summary: Line up a random number of columns so all matching
' items are on the same rows
Dim LC As Long
Dim Col As Long
Dim LR As Long
Application.ScreenUpdating = False
'Spot last column of data
LC = Cells(1, Columns.Count).End(xlToLeft).Column
'Add new key column to collect unique values
Cells(1, LC + 1) = "Key"
For Col = 1 To LC
Range(Cells(2, Col), Cells(Rows.Count, Col)).SpecialCells(xlConstants).Copy _
Cells(Rows.Count, LC + 1).End(xlUp).Offset(1)
Next Col
Columns(LC + 1).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Cells(1, LC + 2), Unique:=True
Columns(LC + 2).Sort Key1:=Cells(2, LC + 2), Order1:=xlAscending, Header:=xlYes
'Fill in new table headers w/formatting
Range("A1", Cells(1, LC)).Copy Cells(1, LC + 3)
'Fill in new table values
LR = Cells(Rows.Count, LC + 2).End(xlUp).Row
With Range(Cells(2, LC + 3), Cells(LR, LC + 2 + LC))
.FormulaR1C1 = "=IF(ISNUMBER(MATCH(RC" & LC + 2 & ",C[-" & LC + 2 _
& "],0)), RC" & LC + 2 & ", """")"
.Value = .Value
End With
'Cleanup/Erase old values
Range("A1", Cells(1, LC + 2)).EntireColumn.Delete xlShiftToLeft
Columns.Autofit
Application.ScreenUpdating = True
End Sub
答案 0 :(得分:2)
您可以使用数组公式(输入时使用Ctrl + Shift + Enter)
我在这里使用了C列,但是您选择从哪个列中提取值并不重要。
如图所示,条件格式也可以使用:使用基于公式的规则
=COUNTIF($A$2:$D$6,A2)=COLUMNS($A$2:$D$6)
要应用,请选择整个数据集(不包括标题)并确保A2是Activecell。
答案 1 :(得分:0)
如果你想检查list1中list1是否为任何一个,你需要在它的每一面放置*通配符,如下所示:
=If(Iserror(Match("*"&B1&"*",A:A,0)),"False","True")
答案 2 :(得分:0)
使用整个文件的名称作为其内容构建一个字符串数组。然后遍历每个名称的数组,并计算它发生的次数。因为名称只能在每列中出现一次,所以您可以在数组中使用它们的出现来衡量它是否包含在所有列中。
如果名称的出现次数与文件中的列数相同,则表示它包含在所有列中。
希望这能让你开始!