2014-09-03 65 views
-4

我有一个2100行和6列的表如何在Excel中找到一组重复的单元格?

在整个表的只有12可能的值,比方说,A,B,C,d,E,F,G,H,I,J,K,L 第12个值L只是一个空白填充。它表示空白单元格。

由于通过表格只有11个可能的值,所以观察到了图案。

首先出现模式,稍后重复表格中的某处。 可以有任何数量的模式,但我有一个特定格式的模式,这是发现和报道的方式。

的解决方案欢迎使用EXCEL-VBA,PHP-MYSQL或C

我附上了Iam寻找的一个例子。欢迎提出建议来改进 的问题。

信息&格式:http://ge.tt/8QkQJet1/v/0 [DOCX文件234 KB]

实施例中的Excel工作表:http://ge.tt/69htuNt1/v/0 [XLSX文件16 KB]

获得更多信息或特定需求请评论。

+0

首先,您是否希望选择一个“模式”来寻找或者您是否要求它查看您拥有信息的10,000个单元格中的每种可能的组合?如果是后者,那么这将需要很长时间来检查和捕获任何可能发现的事情,甚至可能不可能。 – SilverShotBee 2014-09-03 06:35:04

+0

SilverShotBee:感谢您的回复。 表格现在有2200行左右的固定值,模式,不能说10行限制,表示模式会出现在10行和15行之内。第1行不能与任何超过10行的行匹配。在细胞中只有10种可能性,如果你愿意,我会附上一幅图像。我想找到一个模式。如果匹配一次,我可以写一个AND来匹配它,无论它在哪里。 – VIVEK 2014-09-03 06:39:26

+0

模式的最小长度是多少? '2'? – 2014-09-03 07:08:17

回答

0

请尝试下面的代码,将范围更改为您需要的范围,并将图纸编号更改为正确的图纸编号(我不会将您的全部范围放在一起,因为如果您有1000个图案发现,必须在消息框上单击确定1000次,只需测试一个部分范围)

这将扫描范围,并找到任何模式的两个在10行范围内,如果您需要它找到更大的模式,你需要再次添加相同的代码,并用额外的IF语句检查下一个偏移量。

如果同样的模式存在,并且同一列的结构是存在的,但这样只会觉得它的一个开端,你

上测试

Sub test10() 

Dim rCell As Range 
Dim rRng As Range 

Set rRng = Sheets("Sheet1").Range("A1:I60") '-1 on column due to offset 

'Scan through all cells in range and find pattern 
For Each rCell In rRng.Cells 
If rCell.Value = "" Then GoTo skip 
     For i = 1 To 10 
      If rCell.Value = rCell.Offset(i, 0).Value Then 
       If rCell.Offset(0, 1).Value = rCell.Offset(i, 1) Then 
        MsgBox "Match Found at: " & rCell.Address & ":" & rCell.Offset(0, 1).Address & " and " & rCell.Offset(i, 0).Address & ":" & rCell.Offset(i, 1).Address 
       End If 
      End If 
     Next i 
skip: 
Next rCell 


End Sub 

*** UPDATE

工作正常** *

我已经更新了我的代码,下面现在发现的模式无论它可能会出现在未来的10行:

Sub test10() 

Dim rCell As Range 
Dim rRng As Range 
Dim r1 As Range 
Dim r2 As Range 

Set rRng = Sheets("Sheet1").Range("A1:I50") '-1 on column due to offset 

i = 1 'row length 
y = 0 'column length 

'Scan through all cells in range and find pattern 

For Each rCell In rRng.Cells 
If rCell.Value = "" Then GoTo skip 
i = 1 
    Do Until i = 10 
    y = 0 
     Do Until y = 10 
     xcell = rCell.Value & rCell.Offset(0, 1).Value 
     Set r1 = Range(rCell, rCell.Offset(0, 1)) 
     r1.Select 

     ycell = rCell.Offset(i, y).Value & rCell.Offset(i, y + 1).Value 
     Set r2 = Range(rCell.Offset(i, y), rCell.Offset(i, y + 1)) 

      If ycell = xcell Then 

        Union(r1, r2).Font.Bold = True 
        Union(r1, r2).Font.Italic = True 
        Union(r1, r2).Font.Color = &HFF& 
        MsgBox "Match Found at: " & rCell.Address & ":" & rCell.Offset(0, 1).Address & " and " & rCell.Offset(i, y).Address & ":" & rCell.Offset(i, y + 1).Address 
        Union(r1, r2).Font.Bold = False 
        Union(r1, r2).Font.Italic = False 
        Union(r1, r2).Font.Color = &H0& 
      End If 
      y = y + 1 
      Loop 
      i = i + 1 
     Loop 
skip: 
Next rCell 


End Sub 
相关问题