KOD AÇIKLAMADA - DİCTİONARY İLE İKİ LİSTEYİ KARŞILAŞTIRMA - EN HIZLI YÖNTEM

  Рет қаралды 1,153

Uzman Excel

Uzman Excel

Күн бұрын

DİCTİONARY KULLANARAK İKİ LİSTEYİ BİRBİRLERİ İÇERİSİNDE KARŞILAŞTIRABİLİRSİNİZ. BU KOD SAYESİNDE İSE BUNU WİNDOWS NATİVE OBJESİ OLAN DİCTİONARY İLE EN HIZLI ŞEKİLDE YAPABİLİRSİNİZ.
Option Explicit
Public Enum KarsilastirmaTuru
SadeceListe1 = 1
SadeceListe2 = 2
HerIkiside = 3
End Enum
Public Sub ListeKarsilastirmasi()
'Tanimlamalar
'----------------------------------
Dim ws As Worksheet
Set ws = Sheet1
Dim rngListe1 As Range
Dim rngListe2 As Range
Dim rngSonuc As Range
Set rngListe1 = ws.Range("A1").CurrentRegion
Set rngListe2 = ws.Range("C1").CurrentRegion
Set rngSonuc = ws.Range("E1").CurrentRegion
Dim karsilastirma As KarsilastirmaTuru
karsilastirma = HerIkiside
'----------------------------------
Dim dictListe1 As New Dictionary
Dim dictSonuc As New Dictionary
Set dictListe1 = ListeyiOku(rngListe1.Value2)
Set dictSonuc = ListeleriKarsilastir(dictListe1, _
rngListe2.Value2, karsilastirma)
SonuclariYaz rngSonuc, dictSonuc
MsgBox "Listeler Karsilastirilmistir", _
vbInformation, "Sayin " & Environ("UserName")
End Sub
Private Sub SonuclariYaz(ByVal inpRng As Range, ByVal inpDict As Dictionary)
With inpRng
.CurrentRegion.ClearContents
.Value2 = "Sonuclar"
.Offset(1, 0).Resize(inpDict.Count, 1).Value2 = _
Application.Transpose(inpDict.Keys)
End With
End Sub
Private Function ListeleriKarsilastir(ByVal inpDict As Dictionary, _
ByVal inpArr As Variant, _
ByVal karsilastirma As KarsilastirmaTuru) As Dictionary
Dim i As Long
Dim item As Variant
Dim dictKarsilastirmaSonuc As New Dictionary
Dim dictSadeceListe2 As New Dictionary
For i = LBound(inpArr, 1) To UBound(inpArr, 1)
item = inpArr(i, 1)
If inpDict.Exists(item) = True Then
dictKarsilastirmaSonuc(item) = 0
inpDict.Remove item
Else
dictSadeceListe2(item) = 0
End If
Next i
If karsilastirma = HerIkiside Then
Set ListeleriKarsilastir = dictKarsilastirmaSonuc
ElseIf karsilastirma = SadeceListe1 Then
Set ListeleriKarsilastir = inpDict
ElseIf karsilastirma = SadeceListe2 Then
Set ListeleriKarsilastir = dictSadeceListe2
End If
End Function
Private Function ListeyiOku(ByVal inpArr As Variant) As Dictionary
Dim i As Long
Dim dict As New Dictionary
For i = LBound(inpArr, 1) To UBound(inpArr, 1)
dict(inpArr(i, 1)) = 0
Next i
Set ListeyiOku = dict
End Function

Пікірлер: 36
@ilyassaritas8537
@ilyassaritas8537 Жыл бұрын
Teşekkürler hocam elinize ağzınıza dilinize sağlık. Bu VBA'yı bize bu kadar sevdirdiniz. Her izlediğimde ayrı keyif alıyorum.
@UzmanExcel
@UzmanExcel Жыл бұрын
Çok teşekkür ederim Ilyas Bey. Çok naziksiniz
@gezdikcebilelim
@gezdikcebilelim Жыл бұрын
Hocam yemeğe gitmeden yazdıkların buysa dur bi proje yazayım dediğinde yaptıklarını düşünmek bile istemiyorum 😂 Bu videodan çıkan sonuç yolumuz epey uzun ☺️
@UzmanExcel
@UzmanExcel Жыл бұрын
Estağfurullah Sefa Bey :)
@Bilgemen
@Bilgemen Жыл бұрын
Hocam çok güzel bir anlatım tarzınız var. Ağzına ve elinize sağlık
@UzmanExcel
@UzmanExcel Жыл бұрын
Çok teşekkür ederim. Çok naziksiniz
@emrahruhisen6718
@emrahruhisen6718 Жыл бұрын
Yine çok verimli bir çalışma olmuş, elinize sağlık Mehmet Bey
@UzmanExcel
@UzmanExcel Жыл бұрын
Çok teşekkür ederim Emrah Bey. Çok naziksiniz
@sedataksakal414
@sedataksakal414 Жыл бұрын
Yine harikasınız. :) Kod yazarken sizi seyretmek bile çok zevkli. Teşekkürler.. Kolaylıklar diliyorum. Arayı fazla açmayalım lütfen, özlüyoruz. :)
@sedataksakal414
@sedataksakal414 Жыл бұрын
Liste1 ve Liste2, çok sütunlu olduğunda, eşleşen değerin 1.2.3... sütunlarını Array a atarak sonuca yazdırabilir miyiz? ( çalışan1/tckn/şehir/mahalle ) gibi.
@UzmanExcel
@UzmanExcel Жыл бұрын
Çok teşekkür ederim. Çok naziksiniz. İnşallah vaktim oldukça burdayım
@UzmanExcel
@UzmanExcel Жыл бұрын
Concat yaparak dicte atarsak olabilir
@adnankarabacak5878
@adnankarabacak5878 Жыл бұрын
Tesekkürler Mehmet Hocam, Web alandada basarilar dilerim. Bizleri ihmal etmeyin. ❤
@UzmanExcel
@UzmanExcel Жыл бұрын
Burasi ve sizlerin yeri ayrı bende Adnan Bey
@emrullahakcelik552
@emrullahakcelik552 Жыл бұрын
Hocam çok özlemişiz sizi. Hocam udemy kursunuz kıvamında bir web eğitimi bekliyoruz o zaman. 😊
@UzmanExcel
@UzmanExcel Жыл бұрын
İnşallah. Zor gibi zamandan dolayı ama neden olmasin :)
@6ugggg
@6ugggg Жыл бұрын
emeğinize sağlık güzel bir çalışma
@UzmanExcel
@UzmanExcel Жыл бұрын
Çok teşekkür ederim. Çok naziksiniz
@6ugggg
@6ugggg Жыл бұрын
@@UzmanExcel rica ederim
@sedatkeles362
@sedatkeles362 Жыл бұрын
Teşekkürler hocam.
@UzmanExcel
@UzmanExcel Жыл бұрын
Rica ederim Sedat Bey. Çok naziksiniz
@mustafakoker53
@mustafakoker53 Жыл бұрын
Hocam elinize sağlık bir mail göndermiştim size vaktiniz olursa bakıp bşr video da çekermisiniz
@UzmanExcel
@UzmanExcel Жыл бұрын
Merhabalar Mustafa Bey. Çok teşekkür ederim. İnşallah en yakın zamanda bakacağım
@abdersoy1462
@abdersoy1462 Жыл бұрын
Ellerine nefesine sağlık olsun Mehmet hocam. [ karsilastirma = HerIkiside ] Burayı Enum dan değil de Sayfa1 de bir ComboBox1 tan alsak olabilir miydi hocam. ben biraz uğraştım becermedim.😇
@UzmanExcel
@UzmanExcel Жыл бұрын
Tabiki. O zaman hiç enum kullanmadan yapabilirsiniz ya da if sayfadaki deger bu ise enum yapabilirsiniz
@abdersoy1462
@abdersoy1462 Жыл бұрын
@@UzmanExcel Teşekkürler hocam, Tmm. bir de öyle deneyeyimi
@abdersoy1462
@abdersoy1462 Жыл бұрын
Hocam Teşekkürler sayenizde bunu da hallettim. Şu kod ile If Sheets("Sayfa1").ComboBox1.ListIndex = 0 Then karsilastirma = "1" ElseIf Sheets("Sayfa1").ComboBox1.ListIndex = 1 Then karsilastirma = "2" ElseIf Sheets("Sayfa1").ComboBox1.ListIndex = 2 Then karsilastirma = "3" Else MsgBox "Listeden Bir Seçim Yapmalısınız.": Exit Sub 'karsilastirma = "2" ' HerIkiside ' SadeceListe2 ' SadeceListe1 ' End If Çok teşekkürler Ömrün uzun olsun.Selamlar.
@UzmanExcel
@UzmanExcel Жыл бұрын
Çok teşekkür ederim. Çok naziksiniz. Saygılarımla
@sezginbulut44
@sezginbulut44 Жыл бұрын
Eline sağlık
@UzmanExcel
@UzmanExcel Жыл бұрын
Çok teşekkür ederim Sezgin Bey. Çok naziksiniz
@Bilgemen
@Bilgemen Жыл бұрын
Hocam bir sorum olacak. Yapmış olduğum bir excel programda user for açılmadan bazen (automation error vba) hatası veriyor. Sizden ricam mümkünse Tahminen neden kaynaklanıyor olabilir.
@UzmanExcel
@UzmanExcel Жыл бұрын
En garip hatadir automation hatasi. Detayli incelemek gerekli
@yasaroguzocaktan9005
@yasaroguzocaktan9005 Жыл бұрын
Dictionary methodunda tekrarsiz key olmak zorunda değil mi?
@UzmanExcel
@UzmanExcel Жыл бұрын
Aynen öyle. Bu tarz bir durum için önce exist ile kontrol edip add metodunu kullanmak daha güvenli
@yasaroguzocaktan9005
@yasaroguzocaktan9005 Жыл бұрын
@@UzmanExcel hata yapa yapa hatasız yazmayı öğreneceğiz sayenizde:) Keşke on error resume next olayını da anlatsaniz detaylı olarak.
@UzmanExcel
@UzmanExcel Жыл бұрын
İnşallah ama çok tehlikeli resume next olayı. Ben baya az kullanmaya çalışıyorum hatta
Fatih Altaylı yorumluyor: Açık hava tımarhanesi!
48:02
Fatih Altaylı
Рет қаралды 546 М.
Fatih Altaylı yorumluyor: "Adalet de, kalkınma da yok!"
49:49
Fatih Altaylı
Рет қаралды 501 М.
Man Mocks Wife's Exercise Routine, Faces Embarrassment at Work #shorts
00:32
Fabiosa Best Lifehacks
Рет қаралды 6 МЛН
Epic Reflex Game vs MrBeast Crew 🙈😱
00:32
Celine Dept
Рет қаралды 13 МЛН
Life hack 😂 Watermelon magic box! #shorts by Leisi Crazy
00:17
Leisi Crazy
Рет қаралды 76 МЛН
OYUNCAK MİKROFON İLE TRAFİK LAMBASINI DEĞİŞTİRDİ 😱
00:17
Melih Taşçı
Рет қаралды 13 МЛН
4 SATIR KOD İLE LISTBOX FİLTRELEME - CLASS MODÜLÜ
27:40
Uzman Excel
Рет қаралды 2,2 М.
TURKİSH SELENİUM - EXCEL SELENİUM'UN EN BÜYÜK RAKİBİ
23:08
Uzman Excel
Рет қаралды 2,6 М.
ADO SQL VERI ALMA - SORU CEVAP - VERİLERİ LİSTBOX'A YÜKLEMEKE
10:46
Fatih Altaylı ile Pazar Sohbeti: "İlk akla geleni yapmayın!" / Cem Yılmaz
1:18:21
Don't Use ChatGPT Until You Watch This Video
13:40
Leila Gharani
Рет қаралды 1,7 МЛН
Elinizde Ne Dolar, Ne Altın, Ne Ev Kalacak! Tehlike Yaklaşıyor!
18:09
Avrasya Yatırım
Рет қаралды 141 М.
Man Mocks Wife's Exercise Routine, Faces Embarrassment at Work #shorts
00:32
Fabiosa Best Lifehacks
Рет қаралды 6 МЛН