Biray3550
Altın Üye
- Katılım
- 29 Mayıs 2021
- Mesajlar
- 48
- Excel Vers. ve Dili
- Microsoft Office Professional Plus 2021
DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
Altın Üyelik Hakkında Bilgi
Sub deneme()
Dim i, y, j, ss, say, satir As Integer
Dim aranan As String
satir = 2
For i = 2 To Sayfa1.Range("A" & Rows.Count).End(xlUp).Row
say = 0
aranan = Sayfa1.Cells(i, 1)
For ss = Len(Trim(aranan)) To 1 Step -1
If IsNumeric(Mid(Trim(aranan), ss, 1)) Then say = say + 1
Next ss
For y = 2 To ThisWorkbook.Sheets.Count
For j = 2 To Sheets(y).Range("A" & Rows.Count).End(xlUp).Row
If Trim(Sheets(y).Cells(j, 2)) Like Left(aranan, 3) & "*" & Right(aranan, say) Then
Sayfa1.Cells(satir, 2) = Sheets(y).Name
Sayfa1.Cells(satir, 3) = Replace(Sheets(y).Cells(j, 2).Address, "$", "")
Sayfa1.Cells(satir, 4) = Sheets(y).Cells(j, 2)
Sayfa1.Cells(satir, 5) = Sheets(y).Cells(j, 3)
satir = satir + 1
End If
Next j
Next y
Next i
End Sub
Sub test()
Dim sh As Worksheet, reg As Object, elem, a, pattern, say
Dim dic As Object
Set reg = CreateObject("VBScript.Regexp")
Set dic = CreateObject("Scripting.Dictionary")
reg.pattern = "(^\D{3})([\D]*)(\d+$)"
With Sheets("Sayfa1")
For Each elem In .Range("A2:A" & .Cells(Rows.Count, 1).End(3).Row).Value
If reg.test(elem) Then
a = WorksheetFunction.Proper(reg.Replace(elem, "($1)(\D)+($3$)"))
dic.Add a, Null
End If
Next elem
End With
pattern = Join(dic.keys, "|")
reg.pattern = pattern
Debug.Print pattern
reg.ignorecase = True
say = 2
For Each sh In Sheets
If sh.Name <> "Sayfa1" Then
For Each elem In sh.Range("B2:B" & sh.Cells(Rows.Count, 2).End(3).Row)
If reg.test(elem.Value) Then
With Sheets("Sayfa1")
.Cells(say, 2).Value = sh.Name
.Cells(say, 3).Value = elem.Address(0, 0)
.Cells(say, 4).Value = elem.Value
.Cells(say, 5).Value = elem.Offset(, 1).Value
End With
say = say + 1
End If
Next elem
End If
Next sh
End Sub
Dosya çok büyük ve 26 sayfa var.Orijinal verilerinizden bir kısım paylaşabilirseniz bakalım. Aranan kelime tipinde problem olabilir.
Kod:Sub test() Dim sh As Worksheet, reg As Object, elem, a, pattern, say Dim dic As Object Set reg = CreateObject("VBScript.Regexp") Set dic = CreateObject("Scripting.Dictionary") reg.pattern = "(^\D{3})([\D]*)(\d+$)" With Sheets("Sayfa1") For Each elem In .Range("A2:A" & .Cells(Rows.Count, 1).End(3).Row).Value If reg.test(elem) Then a = WorksheetFunction.Proper(reg.Replace(elem, "($1)(\D)+($3$)")) dic.Add a, Null End If Next elem End With pattern = Join(dic.keys, "|") reg.pattern = pattern Debug.Print pattern reg.ignorecase = True say = 2 For Each sh In Sheets If sh.Name <> "Sayfa1" Then For Each elem In sh.Range("B2:B" & sh.Cells(Rows.Count, 2).End(3).Row) If reg.test(elem.Value) Then With Sheets("Sayfa1") .Cells(say, 2).Value = sh.Name .Cells(say, 3).Value = elem.Address(0, 0) .Cells(say, 4).Value = elem.Value .Cells(say, 5).Value = elem.Offset(, 1).Value End With say = say + 1 End If Next elem End If Next sh End Sub