Excelde Koşullu Satır Taşıma Makrosu

Excelde Koşullu Satır Taşıma Makrosu

[quote author=”- ibreryigit”]Ek te gönerdiğim dosya da gelir planı adlı sayfada B sitununa şayet D yazılırsa bu satırı otomatik olarak komple devir sayfasındaki boş olan ilk satıra taşımalı ve gelir planı sayfasındaki ilgili satırı silmeli. günlerdir bir sürü örnek ile denedim fakat başaramadım. bu konuda bana yardımcı olabilirmisiniz[/quote]

Ibrahim Beyin istegi, calisma sayfasindaki bir kritere dayanarak bu kriteri iceren satirlarin baska bir sayfaya tasinmasi ve kaynak olan sayfadan silinmesi idi.

Bunun icin basit bir makro hazirladik, hazirladigimiz bu makronun kodlari su sekilde idi;

Option Explicit

Sub plan_aktar()
Dim i, j, sil, sat As Integer
Application.ScreenUpdating = False
sat = 1
For i = 4 To Sheets("Gelir_Plani").Range("B65536").End(xlUp).Row
If Worksheets("Gelir_Plani").Cells(i, "B").Value = "D" Then
'sat = sat + 1
sat = Sheets("devirler").Range("B65536").End(xlUp).Row + 1
For j = 2 To 41 'AO sutununu ifade etmektedir
Sheets("devirler").Cells(sat, j) = Sheets("Gelir_Plani").Cells(i, j).Value
Next j
Worksheets("Gelir_Plani").Rows(i).EntireRow.Delete
End If
Next i

For sil = 4 To Sheets("Gelir_Plani").Range("B65536").End(xlUp).Row
If Worksheets("Gelir_Plani").Cells(sil, "B").Value = "D" Then
Worksheets("Gelir_Plani").Rows(sil).EntireRow.Delete
End If
Next sil

Application.ScreenUpdating = True
End Sub

Bu ornek calismayi ekliyorum, calismanizda hazirlamis oldugunuz butona makroyu atadim, tiklayarak makronun calismasini saglayabilirsiniz, iyi calismalar.

Excelde Koşullu Satır Taşıma Makrosu

Yazar: demo demo

2004 yilindan itibaren ozel bir sirketin finans departmaninda calismaktadir. Kendini excel, visual basic kullaniminda gelistirmis olan yazarimiz; Meslegi geregi SAP konusunda ileri derecede bilgilidir.

“Excelde Koşullu Satır Taşıma Makrosu” için 17 yorum

  1. Sayın Mustafa bey.
    evet çok işime yaradı. tekrar çok teşekkür ediyorum.
    Fakat; devirler sayfasına satır taşınırken her seferinde hep 2. satırdakinin üzerine yazıyor. Acaba boş olan son satıra yazması mümkün mü ?
    Emeğinize, bilginize ve şahsınıza çok teşekkürler.

    1. Necat bey merhabalar,

      yorum yazidigniz alanda dosya ekleme butonu var, dosyaniz bu konu ile ilgili ise buradan yoksa ana sayfadaki Soru Sormak icin Tiklayin! yazan formdan gonderim yapin, iyi calismalar

      1. Rica ederim, basit bir cozum sagladik sadece. Bu sekildeki cozumleri gunde 5 dakikanizi yeni acilan konualra bakarak ayirirsaniz, cok yakin bir zamnada yapmaya baslarsiniz, iyi calismalar..

  2. Merhaba Ibrahim bey,

    Oncelikle tum emegi gecen arkadaslarim adina mesajiniz icin tesekkur ederim;

    sorunuza gelince; kodda,

    sat = sat + 1

    seklinde olan bolum baslangic satirini belirlemektedir, o yuzden dongu icerisinde birer birer artmaktadir.

    Bu bolumu;

    sat = Sheets(“devirler”).Range(“B65536”).End(xlUp).Row + 1

    seklinde degistirirseniz devirler sayfasinda B sutununun son dolu hucresini bulacak ve bir sonrakine ekleyerek devam edecektir.

    1. sn mustafa bey
      benimde bir sorunum var bu konu ile alakalı olarak
      elimde bir dosya var ve bende koşullu taşıma yapmak istiyorum fakat bende 5 ayrı biçim var
      yani şubesi A olanları asubesi çalışma sayfasına B olanları bsubesine …… taşıyacağım yapamadım. lütfen yardım edin

  3. merhabalar, çok iyi bir çalışma. bu macro başka çalışma kitaplarında çalışması için değiştirilmesi gereken yerler neresi acaba. ben değiştirip başka çalışma kitaplarında denedim ama başarılı olamadım. acaba yazdığınız macro daki değiştirilebilen alanları kırmızı renkte belirtebilir misiniz.?

  4. Muhammet Bey merhaba;
    Kod için teşekkürler eline sağlık ama ben çalıştırırken bazı satırları taşırken siliyor veya diğerinin üstüne ekliyor ben mi hatalı bir giriş yaptım diye düşünüyordum ama örnek verdiğiniz çalışmada aynı şekilde oluyor ilgilenirseniz sevinirim.

    1. Merhaba Melih Bey,

      sat = sat + 1

      olan bolum hatali, tabiki tasinacak kayitlar ardarda olabilir, bu bolumu konuda degistirdim, dosyadaki kodunuzu bu sekilde degistirirseniz; dogru sekilde tasiayacaktir.

      iyi calismalar,
      Mustafa ASLAN

  5. Tekrar merhaba Muhammet Bey;
    Kullandığım kodu aşağıya kopyalıyorum sizin dediğiniz değişikliği de yaptım sonuç aynı devirler sayfasına hepsini taşımıyor siliyor.

    Sub plan_aktar()
    Dim i, j, sil, sat As Integer
    Application.ScreenUpdating = False
    sat = 1
    For i = 4 To Sheets(“Gelir_Plani”).Range(“B65536”).End(xlUp).Row
    If Worksheets(“Gelir_Plani”).Cells(i, “B”).Value = “D” Then
    ‘sat = Sheets(“devirler”).Range(“B65536¨).End(xlUp).Row + 1
    sat = Sheets(“devirler”).Range(“B65536”).End(xlUp).Row + 1
    For j = 2 To 41 ‘AO sutununu ifade etmektedir
    Sheets(“devirler”).Cells(sat, j) = Sheets(“Gelir_Plani”).Cells(i, j).Value
    Next j
    Worksheets(“Gelir_Plani”).Rows(i).EntireRow.Delete
    End If
    Next i

    For sil = 4 To Sheets(“Gelir_Plani”).Range(“B65536”).End(xlUp).Row
    If Worksheets(“Gelir_Plani”).Cells(sil, “B”).Value = “D” Then
    Worksheets(“Gelir_Plani”).Rows(sil).EntireRow.Delete
    End If
    Next sil

    Application.ScreenUpdating = True
    End Sub

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir


9 + 8 =