• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

tek satırlı veriyi çoklu satıra çevirme

ihaveanidea

Altın Üye
Katılım
9 Ekim 2010
Mesajlar
46
Excel Vers. ve Dili
2010
birinci sayfadaki tek satır halinde yazılmış fatura bilgisinde yer alan mal cins ve adetlerini ikinci sayfadaki gibi yazabilmek için bir makro yapılabilir mi?
 

Ekli dosyalar

Merhaba,
Aşağıdaki kodu dener misiniz?
Kod:
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
 
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/
 
mrb

öncelikle emeğiniz için teşekkür ederim. ancak benim yanlış anlatımımdan kaynaklı bir sorun var bu nedenle özür dilerim. elimdeki tüm listelerde AD yazmıyor. "-" ayracına göre satırlara dağıtmayı yapabilir miyiz?
 
mrb

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

öncelikle emeğiniz için teşekkür ederim. ancak benim yanlış anlatımımdan kaynaklı bir sorun var bu nedenle özür dilerim. elimdeki tüm listelerde AD yazmıyor. "-" ayracına göre satırlara dağıtmayı yapabilir miyiz?
 
...elimdeki tüm listelerde AD yazmıyor. "-" ayracına göre satırlara dağıtmayı yapabilir miyiz?

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,
Kod:
With CreateObject("VBScript.RegExp")
      .Global = True
      .Pattern = "[^\d]"
      txt = a(j - 1)
       s2.Cells(ss, 7).Value = .Replace(txt, "")
End With
yerine şu satırı eklemeniz yeterli olacaktır.
Kod:
s2.Cells(ss, 7).Value = a(j - 1)
 
slm

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,
Kod:
With CreateObject("VBScript.RegExp")
      .Global = True
      .Pattern = "[^\d]"
      txt = a(j - 1)
       s2.Cells(ss, 7).Value = .Replace(txt, "")
End With
yerine şu satırı eklemeniz yeterli olacaktır.
Kod:
s2.Cells(ss, 7).Value = a(j - 1)

çok teşekkür ederim
 
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/

Çok teşekkürler ediyorum...
 
Geri
Üst