2014-09-03 48 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 
相關問題