[Yardım]  VBA İLE TEKRAR EDENLERİ KALDIRMAK

VBA Makrolar ile ilgili sormak istedikleriniz, yapmak istedikleriniz hakkında yardım alabileceğiniz bölümdür.

VBA İLE TEKRAR EDENLERİ KALDIRMAK

İleti#1)  Arkadasca » 05 Ağu 2022 12:23

.

Merhaba,

Parametreye göre farklı sayfaları tek bir sayfada birleştirmek, VBA ile mükerrer satırları kaldırıp sıralama yaptırmak istiyorum.

Ekteki dosyada işlem adımlarını izah ettim. Örnek çalışmayı yaptım.

Yardımcı olabilir misiniz?

Teşekkürler

.
Bu iletideki ekleri görmek için gerekli yetkilere sahip değilsiniz.
Kullanıcı avatarı
Arkadasca
Siteye Alışmış
 
Kayıt: 22 Kas 2016 17:59
Meslek: kalite sorumlusu
Yaş: 50
İleti: 474
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İSTANBUL

Yıllık Maaş Bordrosu Hesaplama 2022

Cevap: VBA İLE TEKRAR EDENLERİ KALDIRMAK

İleti#2)  tasad » 05 Ağu 2022 21:24

Özet tablo sayfasındaki butona tıklamanız yeterli.
Bu iletideki ekleri görmek için gerekli yetkilere sahip değilsiniz.
Kullanıcı avatarı
tasad
Site Dostu
 
Kayıt: 04 Şub 2018 11:46
Meslek: muhasebeci
Yaş: 30
İleti: 744
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: ısparta

Cevap: VBA İLE TEKRAR EDENLERİ KALDIRMAK

İleti#3)  Arkadasca » 05 Ağu 2022 22:56

.
Merhaba tasad,

İlginiz için çok teşekkür ederim.

Olması istenen sayfasını okuyabildiniz mi?

Buradaki talep edilenlerde bir sorun var mıdır?

RAPOR Sayfasında çalışacak şekilde düzenleme yapabilir misiniz?

Teşekkürler
Kullanıcı avatarı
Arkadasca
Siteye Alışmış
 
Kayıt: 22 Kas 2016 17:59
Meslek: kalite sorumlusu
Yaş: 50
İleti: 474
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İSTANBUL

Cevap: VBA İLE TEKRAR EDENLERİ KALDIRMAK

İleti#4)  tasad » 06 Ağu 2022 11:23

Rapor sayfasındaki butona tıklamanız yeterli.
Bu iletideki ekleri görmek için gerekli yetkilere sahip değilsiniz.
Kullanıcı avatarı
tasad
Site Dostu
 
Kayıt: 04 Şub 2018 11:46
Meslek: muhasebeci
Yaş: 30
İleti: 744
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: ısparta

REKLAM
Excel Logo XML Oluşturucu
Logo Object Designer ile Uyarlama

Cevap: VBA İLE TEKRAR EDENLERİ KALDIRMAK

İleti#5)  Arkadasca » 06 Ağu 2022 13:01

.
Merhabalar,
Yardımınız için teşekkür ederim.
Gerçek dosyada, 211 satır gelmesi gerekirken sizin dosyada 210 satır geliyor.
Pazartesi günü iş yerinde detaylı araştırma yapıp sorun var ise tekrar size yazarım.

Bu arada, sanırım sizin VBA kurgunuz bizim manuel yaptığımız gibi,
Farklı bir sayfaya bütün verileri alıp buradan RAPOR sayfasına aktarım yapması gibi anladık.
Doğru mudur?

ÖZET TABLO sayfasını kullanmadan, "tek VBA modules ile" çözüme gidilebilir mi?
Kullanıcı avatarı
Arkadasca
Siteye Alışmış
 
Kayıt: 22 Kas 2016 17:59
Meslek: kalite sorumlusu
Yaş: 50
İleti: 474
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İSTANBUL

Cevap: VBA İLE TEKRAR EDENLERİ KALDIRMAK

İleti#6)  tasad » 06 Ağu 2022 14:30

Tek modül ,tek makro.
Bu iletideki ekleri görmek için gerekli yetkilere sahip değilsiniz.
Kullanıcı avatarı
tasad
Site Dostu
 
Kayıt: 04 Şub 2018 11:46
Meslek: muhasebeci
Yaş: 30
İleti: 744
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: ısparta

REKLAM
ETA - Excel Konsolide Raporlama
ETA Excel Personel Entegre Raporu

Cevap: VBA İLE TEKRAR EDENLERİ KALDIRMAK

İleti#7)  Arkadasca » 06 Ağu 2022 15:38

.
Merhabalar,
Hızlı geri dönüş ve değerli yardımlarınız için teşekkür ederim.
Sağlıcakla kalınız.
Kullanıcı avatarı
Arkadasca
Siteye Alışmış
 
Kayıt: 22 Kas 2016 17:59
Meslek: kalite sorumlusu
Yaş: 50
İleti: 474
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İSTANBUL

Cevap: VBA İLE TEKRAR EDENLERİ KALDIRMAK

İleti#8)  Arkadasca » 08 Ağu 2022 11:23

.
Merhaba,
RAPOR sayfasında, B ile C yer değiştirilmesi gereklidir.
(Açıklama yazması gereken yere ürün adı, Ürün adı yazması gereken yere açıklama yazıyor.)

Gerçek dosyada kolon sayısı, sayfa adı, her şeyi aynı yapmama rağmen VBA çalıştıramadım.
Nereyi kontrol etmem gerekiyor?

Gerçek dosyada bir satır eksik yazıyor.
Aşağıdaki VBA Çalışma kurgusunu yazabilirseniz diğer kontrolleri de yapmak istiyorum.

Özverili yardımlarınız için teşekkür ederim.

Kod: Tümünü seç
Sub Ado()

Dim con As Object, rs As Object, rs1 As Object
On Error Resume Next
Set con = CreateObject("adodb.connection")
Sayfa8.Range("a5:C10000").ClearContents
t1 = Sayfa8.Range("a1").Value

con.Open "Provider=Microsoft.ace.oledb.12.0;Data Source=" _
& ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;hdr=no"""

For Each ss In Worksheets
If ss.Name <> "RAPOR" Then
Set rs = con.Execute("Select f4,f6,f7 from [" & ss.Name & "$] Where f5 = " & t1 & "")
Sayfa8.Range("a100000").End(3)(2, 1).CopyFromRecordset rs
End If
Next

Set rs1 = con.Execute("Select Distinct f1,f2,f3 from [RAPOR$a5:c] ")
Sayfa8.Range("a5:c10000").ClearContents
Sayfa8.Range("a100000").End(3)(2, 1).CopyFromRecordset rs1

rs.Close:
rs1.Close:
con.Close:
Set rs = Nothing:
Set rs1 = Nothing:
Set con = Nothing:
End Sub
Kullanıcı avatarı
Arkadasca
Siteye Alışmış
 
Kayıt: 22 Kas 2016 17:59
Meslek: kalite sorumlusu
Yaş: 50
İleti: 474
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İSTANBUL

Cevap: VBA İLE TEKRAR EDENLERİ KALDIRMAK

İleti#9)  tasad » 08 Ağu 2022 13:34

Bu şekilde deneyin.
Kod: Tümünü seç
Sub Ado()

Dim con As Object, rs As Object, rs1 As Object
On Error Resume Next
Set con = CreateObject("adodb.connection")
Sheets("RAPOR").Range("a5:C10000").ClearContents
t1 = Sheets("RAPOR").Range("a1").Value

con.Open "Provider=Microsoft.ace.oledb.12.0;Data Source=" _
& ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;hdr=no"""

For Each ss In Worksheets
If ss.Name <> "RAPOR" Then
Set rs = con.Execute("Select f4,f6,f7 from [" & ss.Name & "$] Where f5 = " & t1 & "")
Sheets("RAPOR").Range("a100000").End(3)(2, 1).CopyFromRecordset rs
End If
Next

Set rs1 = con.Execute("Select Distinct f1,f3,f2 from [RAPOR$a5:c] ")
Sheets("RAPOR").Range("a5:c10000").ClearContents
Sheets("RAPOR").Range("a100000").End(3)(2, 1).CopyFromRecordset rs1

rs.Close: rs1.Close: con.Close
Set rs = Nothing: Set rs1 = Nothing: Set con = Nothing

End Sub


Kullanıcı avatarı
tasad
Site Dostu
 
Kayıt: 04 Şub 2018 11:46
Meslek: muhasebeci
Yaş: 30
İleti: 744
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: ısparta

Cevap: VBA İLE TEKRAR EDENLERİ KALDIRMAK

İleti#10)  Arkadasca » 08 Ağu 2022 14:53

.
Merhaba,

Tamamdır. İstediğimiz gibi oldu, ancak halen daha bir ürün eksik hesaplıyor.

Hangi ürün olduğunu da buldum ancak VBA kurgusu bilmediğim için daha fazla ilerleyemiyorum.

Ürünler hem harf hem de rakamlardan oluşmaktadır. EBA104K gibi...

Gerçek dosyayı da paylaşamıyorum...

Çözüm için ne önerirsiniz?
Kullanıcı avatarı
Arkadasca
Siteye Alışmış
 
Kayıt: 22 Kas 2016 17:59
Meslek: kalite sorumlusu
Yaş: 50
İleti: 474
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İSTANBUL

Cevap: VBA İLE TEKRAR EDENLERİ KALDIRMAK

İleti#11)  tasad » 09 Ağu 2022 10:21

Kolon başlıklarında hücre birleştirme olduğu için 1 satır eksik almış.
Aşağıdaki kodu deneyin.
Kod: Tümünü seç
Sub Ado()

Dim con As Object, rs As Object, rs1 As Object
On Error Resume Next
Set con = CreateObject("adodb.connection")
Sheets("RAPOR").Range("a5:C10000").ClearContents
t1 = Sheets("RAPOR").Range("a1").Value

con.Open "Provider=Microsoft.ace.oledb.12.0;Data Source=" _
& ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;hdr=no"""

For Each ss In Worksheets
If ss.Name <> "RAPOR" Then
Set rs = con.Execute("Select f4,f6,f7 from [" & ss.Name & "$] Where f5 = " & t1 & "")
Sheets("RAPOR").Range("a100000").End(3)(3, 1).CopyFromRecordset rs
End If
Next

Set rs1 = con.Execute("Select Distinct f1,f3,f2 from [RAPOR$a5:c] ")
Sheets("RAPOR").Range("a5:c10000").ClearContents
Sheets("RAPOR").Range("a100000").End(3)(3, 1).CopyFromRecordset rs1

rs.Close: rs1.Close: con.Close
Set rs = Nothing: Set rs1 = Nothing: Set con = Nothing

End Sub


Kullanıcı avatarı
tasad
Site Dostu
 
Kayıt: 04 Şub 2018 11:46
Meslek: muhasebeci
Yaş: 30
İleti: 744
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: ısparta

Cevap: VBA İLE TEKRAR EDENLERİ KALDIRMAK

İleti#12)  Arkadasca » 09 Ağu 2022 11:05

.
Merhabalar,

Tamamdır, bu sefer oldu.
Eksik olan ürün de geldi, kontrol ettim, satır sayısı da tutuyor. Teşekkür ederim. Emeğinize sağlık.

Ancak bu sefer de A5, B5, C5 Yazması gerekirken bir alt satırdan başlayarak yazıyor.
Kusura bakmayın sizi de uğraştırıyorum. Eğer düzeltebilirsek iyi olur.
Yoksa gerisini ben de halledebilirim.
Kullanıcı avatarı
Arkadasca
Siteye Alışmış
 
Kayıt: 22 Kas 2016 17:59
Meslek: kalite sorumlusu
Yaş: 50
İleti: 474
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İSTANBUL

Cevap: VBA İLE TEKRAR EDENLERİ KALDIRMAK

İleti#13)  tasad » 09 Ağu 2022 13:09

Kod: Tümünü seç
Sub Ado()

Dim con As Object, rs As Object, rs1 As Object
On Error Resume Next
Set con = CreateObject("adodb.connection")
Sheets("RAPOR").Range("a5:C10000").ClearContents
t1 = Sheets("RAPOR").Range("a1").Value

con.Open "Provider=Microsoft.ace.oledb.12.0;Data Source=" _
& ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;hdr=no"""

For Each ss In Worksheets
If ss.Name <> "RAPOR" Then
Set rs = con.Execute("Select f4,f6,f7 from [" & ss.Name & "$] Where f5 = " & t1 & "")
Sheets("RAPOR").Range("a100000").End(3)(2, 1).CopyFromRecordset rs
End If
Next

Set rs1 = con.Execute("Select Distinct f1,f3,f2 from [RAPOR$a5:c] ")
Sheets("RAPOR").Range("a5:c10000").ClearContents
Sheets("RAPOR").Range("a100000").End(3)(3, 1).CopyFromRecordset rs1

rs.Close: rs1.Close: con.Close
Set rs = Nothing: Set rs1 = Nothing: Set con = Nothing

End Sub


Kullanıcı avatarı
tasad
Site Dostu
 
Kayıt: 04 Şub 2018 11:46
Meslek: muhasebeci
Yaş: 30
İleti: 744
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: ısparta

Cevap: VBA İLE TEKRAR EDENLERİ KALDIRMAK

İleti#14)  Arkadasca » 09 Ağu 2022 13:17

.
Merhaba,
Çok teşekkür ederim.
Esenlikle kalınız.

.
Kullanıcı avatarı
Arkadasca
Siteye Alışmış
 
Kayıt: 22 Kas 2016 17:59
Meslek: kalite sorumlusu
Yaş: 50
İleti: 474
 
Cinsiyet: Bay
Bulunduğunuz İl / Semt: İSTANBUL


Forum Genel Makro Soruları

Online Kullanıcılar

Bu forumu görüntüleyenler: Google [Bot] ve 5 misafir

Bumerang - Yazarkafe