• DİKKAT

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

Mahalle Adına Göre Döngü Oluşturmak

Katılım
15 Mart 2009
Mesajlar
31
Excel Vers. ve Dili
2010 Türkçe
Merhabalar,

Elimde yüzbinlerce satırlık mahalle verisi var, ve bu mahallelerdeki her sokağın bir arsa değeri mevcut. Bu verileri pivotla filtrelemek için satır verisine dönüşürmek istiyorum.

Örnek olması açısından ekteki excelde elimdeki veri(düzenlenmemiş veri) ve olmasını istediğim veri (düzenlenmiş veri) yi görebilirsiniz.


Uğraştım ve arama yaptım göremedim, yardımcı olursanız / ilgili konuya yönlendirirseniz çok sevinirim.
 

Ekli dosyalar

Örneğinizde her iki kısım da "Düzeltilmemiş Veri" olarak görünüyor.
 
Merhaba,

Aşağıdaki kodları bir modüle kopyalayıp deneyiniz.

Kod:
Sub Duzenle()
    Dim i   As Long
    Dim Son As Long
    
    Son = Cells(Rows.Count, "a").End(3).Row
    On Error GoTo Son
    Application.ScreenUpdating = False
    For i = 3 To Son
        If IsNumeric(Cells(i, "B")) = True Then Cells(i, "B") = ""
    Next i
    
    Range("B2:B" & Son).SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=R[-1]C"
    
    Range("B2:B" & Son).Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    
    Range("B2").Select
    
    With Application
        .ScreenUpdating = True
        .CutCopyMode = False
    End With
    
    MsgBox "İşlem Tamamlanmıştır...", vbInformation
Son:
End Sub
 
Tekrar Merhaba,

İşi biraz abartmışım. Aşağıdaki kodları kullanabilirsiniz.

Kod:
Sub Duzenle2()
 
    Dim i As Long
    
    Application.ScreenUpdating = False
    For i = 2 To Cells(Rows.Count, "A").End(3).Row
        If IsNumeric(Cells(i, "B")) = True Then Cells(i, "B") = Cells(i - 1, "B")
    Next i
    Application.ScreenUpdating = True
    MsgBox "işlem Tamamlanmıştır..."
    
End Sub
 
Öyleyse alternetif olarak şu çözümleri önereyim:

Formülle çözmek isterseniz (ki belirttiğiniz gibi yüzbinlerce satır ise zor olur) B2 hücresine aşağıdaki formülü yazıp aşağıdaki hücrelere kopyalayın:

Kod:
=EĞER(SAĞDAN(A2;9)="MAHALLESİ";A2;B1)

Makro için de aşağıdaki kodları bir modüle kopyalayıp deneyebilirsiniz:

Kod:
Sub mahalle()
For i = 2 To Cells(Rows.Count, 1).End(3).Row
If Right(Cells(i, 1), 9) = "MAHALLESİ" Then
Cells(i, 2) = Cells(i, 1)
Else
Cells(i, 2) = Cells(i - 1, 2)
End If
Next
End Sub
 
Öyleyse alternetif olarak şu çözümleri önereyim:

Formülle çözmek isterseniz (ki belirttiğiniz gibi yüzbinlerce satır ise zor olur) B2 hücresine aşağıdaki formülü yazıp aşağıdaki hücrelere kopyalayın:

Kod:
=EĞER(SAĞDAN(A2;9)="MAHALLESİ";A2;B1)

Makro için de aşağıdaki kodları bir modüle kopyalayıp deneyebilirsiniz:

Kod:
Sub mahalle()
For i = 2 To Cells(Rows.Count, 1).End(3).Row
If Right(Cells(i, 1), 9) = "MAHALLESİ" Then
Cells(i, 2) = Cells(i, 1)
Else
Cells(i, 2) = Cells(i - 1, 2)
End If
Next
End Sub

Çok teşekkürler, ancak bu satırlarda Mah., MahalleSi, Mahalle gibi metinler olduğundan ilk verdiğiniz alternatif metne göre düzenlense çok daha işimi kolaylaştıracaktı, yine de sağolun..
 
Öyleyse 4. mesajdaki Sayın Necdet Beyin vermiş olduğu kod işinizi görecektir. Çünkü B sütununda sayısal değer gördüğünde bir üstteki değeri alır.
 
Geri
Üst