• DİKKAT

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

Makro Sorusu Hk.

Katılım
25 Aralık 2019
Mesajlar
8
Excel Vers. ve Dili
2017
Merhabalar arkadaşlar,
Yaklaşık 500 tane çalışan bulunmakta ve excel listesi her biri ayrı ayrı farklı sayfalarda bulunmakta ve her sayfadaki çalışanların şablonu aynı. Şöyle bir koda ihtiyacım bulunmakta. N sütunundaki en alttaki değeri silip, bir üstteki değeri alabileceğim ve bu değerleri sayfa1de a1 sütununa hepsini okutabileceğim kodu nasıl yazabilirim.

Sub sayfalariAl()
Dim sayfa As Worksheet
Dim sayac As Integer
sayac = 1
Set sayfa = ThisWorkbook.Worksheets(1)
For sayac = 1 To Worksheets.Count
sayfa.Range("A" & sayac).Value = Worksheets(sayac).Name

Next
End Sub

Bu kodla bütün çalışma sayfalarının isimlerini a sütununa indirebiliyorum.Yanına N sütununun son satırından bir önceki satırı nasıl getirebilirim ? Değerli desteklerinizi rica ederim.
 
Merhaba. aşağıdaki kodu kullanabilirsiniz..

Kod:
Sub sayfalariAl()
    Dim sayfa As Worksheet
    Dim sayac As Integer
    sayac = 1
    Set sayfa = ThisWorkbook.Worksheets(1)
    For sayac = 1 To Worksheets.Count
        sayfa.Range("A" & sayac).Value = Worksheets(sayac).Name
        sayfa.Range("A" & sayac).Value = Worksheets(sayac).Range("N" & Rows.Count).End(xlUp).Offset(-1, 0)
    Next
End Sub

Şunu söylemek isterim.
Set sayfa = ThisWorkbook.Worksheets(1)
satırında 1. indeksdeki sayfaya kaydet anlamına geliyor.
Bunun yerine sayfa ismini belirtmeniz ileride sorun yaşamamanız adına daha iyi olur. Aşağıdaki gibi.
Set sayfa = ThisWorkbook.Worksheets("SayfanızınAdı")
 
@dalgalikur
İlginiz için çok teşekkür ederim.Runtime error hatası alıyorum.Hem sayfa ismi belirtip denedim hem de direk copy paste yaptım velakin çalıştıramadım. Kontrol edebilir misiniz ? Debug kısmında yazdığınız yer sarı renk veriyor.
 
Merhaba;
Alternatif:

Boş bir modüle;

Sub işlem()
Dim i As Integer, sat As Integer
Sheets("Sayfa1").Select
Range("a1:b65536").ClearContents
sat = 1
For i = 1 To Worksheets.Count
If Sheets(i).Name <> "Sayfa1" Then
Cells(sat, "A") = Sheets(i).Name
Set s2 = ThisWorkbook.Worksheets(Cells(sat, 1).Value)
sondolu = s2.Range("n65536").End(xlUp).Row
Cells(sat, 2) = s2.Cells(sondolu - 1, "n")
s2.Cells(sondolu, "n") = ""
sat = sat + 1
End If
Next i
End Sub

Ekleyerek deneyin.
Not: Koyu yazılı sayfa ismi kodların çalışacağı sayfayı belirtiyor. Sizin sayfanızın adı farklı ise bu alanları güncelleyin.

İyi çalışmalar.
 
Teşekkür ederim ilginiz için. @myuygun Module eklediğimde tüm çalışma sayfalarının n sutununundaki en alttaki değeri vermekte. Ben en alttaki değil en altın bir üstündeki değeri nasıl alabilirim ? :)
 
Merhaba;
Denemelerimde ben böyle bir sonuç almadım.
Ekli dosyada makroyu çalıştırmadan sayfaları gözlemleyin. (son dolu hücredeki veriyi ve bir üst verisini kontrol edin.)
Sonra butona basın.
Tekrar sayfaları ve Sayfa1 e gelen verileri kontrol edin.
Son dolu hücrenin bir üst değerini sayfa1 de sayfa adının karşısına yazıyor.
Deneyin.
İyi çalışmalar.

Not: Tabi butona bir kez basmanız gerekiyor. (ikinci kez bastığınızda son dolu hücre silindiği için gelen veri değişecektir.)
Link:
 

Ekli dosyalar

Son düzenleme:
Altın üye olamadığım için indiremedim maalesef.Tekrar tekrar denedim en alttaki değeri aldı. Şimdi yeni excel oluşturup deneyeceğim çok teşekkür ederim.
 
6 nolu mesajda dış link var.
örneği Link yazan yerin altından indirin.
 
@muygun
Çok teşekkür ederim şimdi olayı anladım. 2 kere tıklayınca üstte çıkıyor. Allah razı olsun bu iş çok işime yaradı. Teşekkür ederim.
 
Geri
Üst