Çözüldü Listedeki Değerleri Kriterlere Göre Sütunlarda Listeleme

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

kmlzdmr

Site Üyesi
Excel Versiyonu
Excel 2016
Excel Sürümü
64 Bit
Excel Dili
Türkçe
Merhaba,
İki listedeki değerlerin kriterlere göre farklı sütunlarda listelenmesi için formüllere ihtiyacım var.
Birinci liste A sütununda ve İkinci liste B sütununda olup sonuç sütunlara C,D,E,F dir.
A ve B sütun değerleri asıl belgede rakamlardan oluşmaktadır. Örneğin 1856253278 olup ekli dosyada kolaylık olsun diye bir iki haneli sayılar yapılmıştır.
C sütununda gerekli olan listeleme sonucu: A-B (A sütununda olup B sütununda olmayanlar)
D sütununda gerekli olan listeleme sonucu: A ve B sütunlarındaki değerlerden ortak olanlar
E sütununda gerekli olan listeleme sonucu: A ve B sütunlarında bulunan tüm değerler
F sütununda gerekli olan listeleme sonucu: B - A (B sütununda olup A sütununda olmayan değerler)
Nasıl yapılır?
 

Ekli dosyalar

Çözüm
@KMLZDMR
-- Alt taraftan ilgili sayfanın adına fareyle sağ tıklayıp KOD GÖRÜNTÜLEyi seçin,
karşınıza gelecek VBA ekranında sağdaki boş alana aşağıdaki birinci kodu yapıştırın (H1'deki seçimi değiştirince kodun otomatik çalışması için)
-- Module1'deki Makro2 kodlarını da aşağıdaki şekilde düzeltin.


VBA:
You must log in to view content
(4 satır)

VBA:
You must log in to view content
(11 satır)
Sayın @KMLZDMR

Sırayla C2, D2, E2 ve F2'ye dizi formülü (CTRL+SHIFT+ENTER) olarak uygulayın ve
her bir sütunda BOŞ sonuç alıncaya kadar aşağı doğru kopyalayın.

Kod:
You must log in to view content
(4 satır)
 
Sayın @KMLZDMR

Sırayla C2, D2, E2 ve F2'ye dizi formülü (CTRL+SHIFT+ENTER) olarak uygulayın ve
her bir sütunda BOŞ sonuç alıncaya kadar aşağı doğru kopyalayın.

Kod:
You must log in to view content
(4 satır)
Merhaba,
formül içlerindeki A ve B sütunlarındaki son dolu hücreyi nasıl uygularız. Örneğin c2 için uygulanacak formü içindeki B2:B41 deki 41. satır son hücre olup 41 yerine B sütunundaki son hücreyi bulacak formül burada nasıl uygulanır. Buna göre D E F sütunlarında da bunu uygulayabileyim.
Buna ihtiyaç var. Zira A ve B sütun değerleri değişken satırlarda olacaktır.
 
@KMLZDMR
Kırmızı kısımları yeşil olanlarla değiştirince de aynı sonuçlar alınır.

Bence, yeşil formülleri kullanarak 1'inciyle Aalan, 2'nciyle Balan, 3'üncüyle de ABalan isimlerini kullanarak
üç adet AD TANIMLAMASI oluşturup, verdiğim formüllerde bunların yerine bu AD ları kullanırsanız daha iyi olur.

$A$2:$A$39 >> KAYDIR($A$1;1;;KAÇINCI(10^10;$A:$A;1)-1; )
$B$2:$B$41 >> KAYDIR($B$1;1;;KAÇINCI(10^10;$B:$B;1)-1; )
$A$2:$B$41 >> KAYDIR($A$1;1;;MAK(KAÇINCI(10^10;$A:$A;1)-1;;KAÇINCI(10^10;$B:$B;1)-1);2)

.
 
@KMLZDMR
Kırmızı kısımları yeşil olanlarla değiştirince de aynı sonuçlar alınır.

Bence, yeşil formülleri kullanarak 1'inciyle Aalan, 2'nciyle Balan, 3'üncüyle de ABalan isimlerini kullanarak
üç adet AD TANIMLAMASI oluşturup, verdiğim formüllerde bunların yerine bu AD ları kullanırsanız daha iyi olur.

$A$2:$A$39 >> KAYDIR($A$1;1;;KAÇINCI(10^10;$A:$A;1)-1; )
$B$2:$B$41 >> KAYDIR($B$1;1;;KAÇINCI(10^10;$B:$B;1)-1; )
$A$2:$B$41 >> KAYDIR($A$1;1;;MAK(KAÇINCI(10^10;$A:$A;1)-1;;KAÇINCI(10^10;$B:$B;1)-1);2)

.
Teşekkür ederim. Hemen konuya çalışıyorum.
 
Önce; önceki cevapta verdiğim KAÇINCI(10^10..... şeklindeki, son veri satırını bulma
formül parçasına ait bir tane de alternatif vereyim. Örneğin A sütunu için ARA(2;1/(A:A<>"");SATIR(A:A))

Şu formül ise örneğin A ve B sütunundaki benzersiz veri sayısını verir (başlıklar dahil)
=TOPLA.ÇARPIM(($A:$B<>"")/EĞERSAY($A:$B;$A:$B&""))

Yukarıda yazdıklarım işinize yarayacaktır.

.
 
Önce; önceki cevapta verdiğim KAÇINCI(10^10..... şeklindeki, son veri satırını bulma
formül parçasına ait bir tane de alternatif vereyim. Örneğin A sütunu için ARA(2;1/(A:A<>"");SATIR(A:A))

Şu formül ise örneğin A ve B sütunundaki benzersiz veri sayısını verir (başlıklar dahil)
=TOPLA.ÇARPIM(($A:$B<>"")/EĞERSAY($A:$B;$A:$B&""))

Yukarıda yazdıklarım işinize yarayacaktır.

.
Sayın Ömer BARAN üstadım,
Yukarıdaki formüller için de teşekkür ederim.
İlgili dosya için C sütunundaki formülü makroya çevirip değer yapıştırmasına ilişkin sizin daha önceden hazırlanmış olduğunu benzer bir durum için makro uygulamaya çalıştım. Olmadı. Makro aşağıdadır. Bu sadece C sütunu içindi. Lütfen C,D,E,F sütunları içinde çalışabilecek ayrı makrolar yapılabilir misiniz. Lütfen konuyu (formülleri) makro ile açıp değer yapıştırabilir şekilde yapabilir misiniz?

C sütunu için yapmaya çalıştığım bu makro işlem yapmadı. Ayrıca Sayfa1 WorkSheet sayfasına yapıştırdığım halde (General) sayfasında da görünmekte. Silememekteyim.

Sub AolupBolmayan()
'
' AolupBolmayan Makro
'
'Cells(2, 3).Formula
'Range("c2").Formula
[C2:C1000].Formula = "=IFERROR(OFFSET(R1C1,SMALL(IF(COUNTIF(BalanıVTN,AalanıVTN)=0,ROW(AalanıVTN)-1),ROW(R[-1]C[-2])),0),"""")"
If [H1] = "DEĞER" Then [C2:C1000].Value = [C2:C1000].Value
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [H1]) Is Nothing Then Exit Sub
AolupBolmayan
End Sub
 
MAKRO KAYDET yaparken formülü dizi formülü olarak uygulamamışsınız anlaşılan.

Keşke MAKRO KAYDET yöntemiyle işlem yapmaya, DİZİ FORMÜLLERİ üzerinden başlamasaymışsınız.

Her neyse artık, tavsiyem; MAKRO KAYDET düğmesine tıklayıp, C, D, E, F için sadece ilk satırdaki formülleri birer kez dizi formülü olarak uygulayın.
Sonra da C2:F2'yi seçip sağ alt köşesinden tutarak aşağı doğru çektikten sonra makro kaydını durdurun.
Bundan sonra .Value=.Value olayına bakarsınız.

.
 
MAKRO KAYDET yaparken formülü dizi formülü olarak uygulamamışsınız anlaşılan.

Keşke MAKRO KAYDET yöntemiyle işlem yapmaya, DİZİ FORMÜLLERİ üzerinden başlamasaymışsınız.

Her neyse artık, tavsiyem; MAKRO KAYDET düğmesine tıklayıp, C, D, E, F için sadece ilk satırdaki formülleri birer kez dizi formülü olarak uygulayın.
Sonra da C2:F2'yi seçip sağ alt köşesinden tutarak aşağı doğru çektikten sonra makro kaydını durdurun.
Bundan sonra .Value=.Value olayına bakarsınız.

.
Sayın Ömer BARAN üstadım,
Makro2 olarak aşağıda düzenlemeye çalıştım. Yukarıda dediğiniz gibi otomatik makro çalıştırdım. sonra kırmız renkli olanları düzenledim.
Ancak olmadı. Dizi formülü olarak gelmedi. ilk formülden sonra makro takıldı. Hatamı düzeltemedim. Ayrıca dosyayı makrolu olarak ekleyecektim ama eklenecek yeri bulamadığım için makroyu aşağıya yazdım.


Sub Makro2()
'
' Makro2 Makro
'

'
Range("C2").Select
Selection.FormulaArray = _
[C2:C1000].Formula = "=IFERROR(OFFSET(R1C1,SMALL(IF(COUNTIF(BalanıVTN,AalanıVTN)=0,ROW(AalanıVTN)-1),ROW(R[-1]C[-2])),0),"""")"
If [H1] = "DEĞER" Then [C2:C1000].Value = [C2:C1000].Value
Range("D2").Select
Selection.FormulaArray = _
[D2:D1000].Formula = "=IFERROR(OFFSET(R1C1,SMALL(IF(COUNTIF(BalanıVTN,AalanıVTN)>0,ROW(AalanıVTN)-1),ROW(R[-1]C[-3])),0),"""")"
If [H1] = "DEĞER" Then [D2:D1000].Value = [D2:D1000].Value
Range("E2").Select
Selection.FormulaArray = _
[E2:E1000].Formula = "=IF(R[-1]C="""","""",IFERROR(SMALL(IF(ABalanıVTN<>"""",IF(ABalanıVTN>IF(ISTEXT(R[-1]C),0,R[-1]C),ABalanıVTN)),1),""""))"
If [H1] = "DEĞER" Then [E2:E1000].Value = [E2:E1000].Value
Range("F2").Select
Selection.FormulaArray = _
[F2:F1000].Formula = "=IFERROR(OFFSET(R1C2,SMALL(IF(COUNTIF(AalanıVTN,BalanıVTN)=0,ROW(BalanıVTN)-1),ROW(R[-1]C[-5])),0),"""")"
If [H1] = "DEĞER" Then [F2:F1000].Value = [F2:F1000].Value
Range("C2:F2").Select
Selection.AutoFill Destination:=Range("C2:F1000"), Type:=xlFillDefault
Range("C2:F1000").Select
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [H1]) Is Nothing Then Exit Sub
Makro2
End Sub
 
Her formülün solundaki [C2:C1000].Formula = "=IFERROR(.... kırmızı kısımları silin.
Her formülün altındaki If [H1] = "DEĞER" The..... diye devam eden kırmızı satırların sol başına TEK TIRNAK ekleyerek etkisiz hale getirin.

Formüllerin uygulandığından ve sonuç aldığınızdan emin olduktan sonra bu tek tırnak işaretlerini silip kodu tekrar çalıştırırsınız.
Kullandığınız formüller bilgisayarı yoracak cinsten, o yüzden biraz bekletecektir.

Daha evvel de belirttim.
MAKRO KAYDET olayına basit formüllerle başlasaydınız keşke.
Zira dizi formülü uygulamalarında farklı durumlar da olabilir.

.
 
Her formülün solundaki [C2:C1000].Formula = "=IFERROR(.... kırmızı kısımları silin.
Her formülün altındaki If [H1] = "DEĞER" The..... diye devam eden kırmızı satırların sol başına TEK TIRNAK ekleyerek etkisiz hale getirin.

Formüllerin uygulandığından ve sonuç aldığınızdan emin olduktan sonra bu tek tırnak işaretlerini silip kodu tekrar çalıştırırsınız.
Kullandığınız formüller bilgisayarı yoracak cinsten, o yüzden biraz bekletecektir.

Daha evvel de belirttim.
MAKRO KAYDET olayına basit formüllerle başlasaydınız keşke.
Zira dizi formülü uygulamalarında farklı durumlar da olabilir.

.
Dediğiniz şekilde yaptım. H1 hücresindeki seçime göre makroyu çalıştıramadım. Lütfen bakabilir misiniz? Dosya ektedir.
 

Ekli dosyalar

@KMLZDMR
-- Alt taraftan ilgili sayfanın adına fareyle sağ tıklayıp KOD GÖRÜNTÜLEyi seçin,
karşınıza gelecek VBA ekranında sağdaki boş alana aşağıdaki birinci kodu yapıştırın (H1'deki seçimi değiştirince kodun otomatik çalışması için)
-- Module1'deki Makro2 kodlarını da aşağıdaki şekilde düzeltin.


VBA:
You must log in to view content
(4 satır)

VBA:
You must log in to view content
(17 satır)
 
Çözüm
@KMLZDMR
-- Alt taraftan ilgili sayfanın adına fareyle sağ tıklayıp KOD GÖRÜNTÜLEyi seçin,
karşınıza gelecek VBA ekranında sağdaki boş alana aşağıdaki birinci kodu yapıştırın (H1'deki seçimi değiştirince kodun otomatik çalışması için)
-- Module1'deki Makro2 kodlarını da aşağıdaki şekilde düzeltin.


VBA:
You must log in to view content
(4 satır)

VBA:
You must log in to view content
(17 satır)
Çok teşekkür ederim.
 
@KMLZDMR
Makro konusunda biraz mesafe almak için;
-- Hücre adresi yazma biçimleri,
-- Sayfalar arası geçiş yapma,
-- Bütün olarak belli sütunu/satırı seçme,
-- Adresi verilen bir hücreyi seçme, adresi verilen bir satır/sütun aralığını seçme,
-- Belli hücre/alana kenarlık, arka plan rengi, yazıtipi, sayı formatı verme,
-- Belli satırda son dolu hücre, ilk boş hücre satır numarası bulma,
-- Belli sütunda son dolu hücre, ilk boş hücre sütun numarası bulma,
-- Basit For .... Next döngüleri,
-- Basit If .... Elseif ... Else ... End If yapısı,
gibi hususlara öncelik verin derim.
Son iki husus dışında. tek tek MAKRO KAYDI başlatıp işlemi elle yapıp kaydı durdurduktan sonra oluşan kodları kurcalayın.
En önemlisi de excelin yerleşik menülerine hakimiyetinizi artırmaya bakın.

Deneme/yanılma en iyi öğrenme yöntemidir, hata aldığınızda yılmayın, hatanın sebebini anlamaya çalışın.

.
 
@KMLZDMR
Makro konusunda biraz mesafe almak için;
-- Hücre adresi yazma biçimleri,
-- Sayfalar arası geçiş yapma,
-- Bütün olarak belli sütunu/satırı seçme,
-- Adresi verilen bir hücreyi seçme, adresi verilen bir satır/sütun aralığını seçme,
-- Belli hücre/alana kenarlık, arka plan rengi, yazıtipi, sayı formatı verme,
-- Belli satırda son dolu hücre, ilk boş hücre satır numarası bulma,
-- Belli sütunda son dolu hücre, ilk boş hücre sütun numarası bulma,
-- Basit For .... Next döngüleri,
-- Basit If .... Elseif ... Else ... End If yapısı,
gibi hususlara öncelik verin derim.
Son iki husus dışında. tek tek MAKRO KAYDI başlatıp işlemi elle yapıp kaydı durdurduktan sonra oluşan kodları kurcalayın.
En önemlisi de excelin yerleşik menülerine hakimiyetinizi artırmaya bakın.

Deneme/yanılma en iyi öğrenme yöntemidir, hata aldığınızda yılmayın, hatanın sebebini anlamaya çalışın.

.
Öneriler için teşekkür ederim.
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Konuyu başlatan
Site Üyesi
Katılım
Konum
ANKARA
Konu Bilgi
Durum
Çözüldü 
Forum
Excel Formül Soruları
Başlangıç tarihi
Son yanıt tarihi
Cevaplar
16
Üst