ihaveanidea
Altın Üye
- Katılım
- 9 Ekim 2010
- Mesajlar
- 46
- Excel Vers. ve Dili
- 2010
DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
Altın Üyelik Hakkında Bilgi
Sub CokSatır()
Set s1 = Sheets("tek satır")
Set s2 = Sheets("çoklu satır")
For i = 1 To s1.Range("A" & Rows.Count).End(3).Row
q = Split(s1.Cells(i, 6).Value, "-")
a = Split(s1.Cells(i, 7).Value, "-")
w = UBound(q)
ss = s2.Range("A" & Rows.Count).End(3).Row + 1
s2.Range("H" & ss & ":J" & ss).Value = s1.Range("H" & i & ":J" & i).Value
For j = 1 To w + 1
s2.Range("A" & ss & ":E" & ss).Value = s1.Range("A" & i & ":E" & i).Value
s2.Cells(ss, 6).Value = q(j - 1)
With CreateObject("VBScript.RegExp")
.Global = True
.Pattern = "[^\d]"
txt = a(j - 1)
s2.Cells(ss, 7).Value = .Replace(txt, "")
End With
ss = ss + 1
Next
Next i
MsgBox "İşlem Tamamlandı.", vbInformation, "dEdE " & Application.UserName & "'e Başarılar diler."
End Sub
Merhabalar, yukarıdaki kodun bu kısmını açıklayabilir misiniz?
Kod:With CreateObject("VBScript.RegExp") .Global = True .Pattern = "[^\d]" txt = a(j - 1) s2.Cells(ss, 7).Value = .Replace(txt, "") End With
...elimdeki tüm listelerde AD yazmıyor. "-" ayracına göre satırlara dağıtmayı yapabilir miyiz?
With CreateObject("VBScript.RegExp")
.Global = True
.Pattern = "[^\d]"
txt = a(j - 1)
s2.Cells(ss, 7).Value = .Replace(txt, "")
End With
s2.Cells(ss, 7).Value = a(j - 1)
Merhaba,
AD yazıp yazmaması sorun değil, yazmasa da kod çalışır. Yazıyorsa ayıklayarak sadece sayıyı yazar.
Ama "-" den ayırsın AD yazıyorsa onu da alsın diyorsanız aşağıdaki kodu silip,
yerine şu satırı eklemeniz yeterli olacaktır.Kod:With CreateObject("VBScript.RegExp") .Global = True .Pattern = "[^\d]" txt = a(j - 1) s2.Cells(ss, 7).Value = .Replace(txt, "") End With
Kod:s2.Cells(ss, 7).Value = a(j - 1)
Merhaba,
Söz konudu kod Regular Expressions (RegExp) - Düzenli İfadeler olarak anılır. Desen eşleştirmesi de diyebiliriz. Belirlenmiş desenlere(pattern) uyan karakterleri metin içinden ayıklamada hızlı ve kolay bir yöntemdir.
Söz konudu kodda .Pattern = "[^\d]" ifadesi sayısal değerleri ifade eder. Soruya ekli örnek dosyada ürün miktarları 100AD-250AD şeklinde yazılmış ve çoklu satıra dönüştürürken 100 250 şeklinde AD ifadesi olmadan istenmiş. Bu kod Ad ifadesini ayıklayarak sadece sayısal değerleri alıyor.
Örnek uygulamalar ve daha fazla için aşağıdaki linke bakılabilir.
http://www.excel.web.tr/f165/