Excel'de değerleri gruplara göre nasıl sıralarız?
Excel'de gruplandırılmış verilerle çalışmak, her bir gruptaki değerleri karşılaştırmayı gerektirir. Örneğin, bölgeye göre satış rakamlarını sıralamak, sınıfa göre sınav notlarını veya kategoriye göre işlem miktarlarını sıralamak gibi. Excel, verileri sıralamak için güçlü araçlar sağlarken, gruplar içindeki sıralama ("grup bazında sıralama" veya "koşullu sıralama" olarak da bilinir) belirli bir yaklaşım gerektirir. Bu özellikle, gruplar arasında sonuçları karıştırmadan farklı kategorilerdeki performansı değerlendirmek veya en iyi ve en düşük kayıtları belirlemek istediğinizde kullanışlıdır. Aşağıdaki yöntemler, gruplar içindeki değerleri sıralamak için pratik çözümler sunar, bu sayede günlük görevlerinizde verilerinizi daha doğru bir şekilde yorumlamanızı ve analiz etmenizi kolaylaştırır.
Gruplara göre değerleri sırala
VBA Kodu - Her bir grup içindeki değerleri otomatik olarak sıralamak için makro kullanın
Gruplara göre değerleri sırala
Öğrencileri sınıflara göre puanlamak veya farklı bölgelere göre satışları listelemek gibi farklı gruplarda değerleri sıralama ihtiyacı duyduğunuz durumlarda, Excel'in doğrudan bir "gruba göre sıralama" özelliği bulunmamaktadır. Ancak, iyi tasarlanmış bir formül, fazladan veri işleme yapmadan grup bazında sıralama işlemini etkili bir şekilde gerçekleştirebilir.
Bunu yapmak için mantıksal testleri toplama işlevleriyle birleştiren bir dizi formülü kullanabilirsiniz. Bu yaklaşım, her bir değeri yalnızca belirlenen grubu içinde karşılaştırmanızı sağlar ve her bir veri noktası için gerekli olan sıralamayı üretir.
Aşağıdaki adımları izleyin:
- Grubu (A2:A11) ve Değeri (B2:B11) gibi sütunlarda gruplandırılmış verilerinizi hazırlayın.
- Verilerinizin yanındaki boş bir hücre seçin — genellikle ilk satırda değerlerinizin yanındaki hücre, örneğin C2 hücresi.
- Aşağıdaki formülü girin:
=SUMPRODUCT(($A$2:$A$11=A2)*(B2<$B$2:$B$11))+1
Bu formül, aynı gruptaki kaç değerin şu anki değerden küçük olduğunu sayarak çalışır. İşte her bir parametrenin ne anlama geldiği:
- ($A$2:$A$11=A2)
→ Bu, A2:A11 aralığındaki her bir hücrenin A2'deki değere eşit olup olmadığını kontrol eder.
→ Her bir satırın A2 ile aynı grupta olup olmadığını temsil eden TRUE/FALSE (veya 1/0) değerlerinden oluşan bir dizi döndürür. - (B2<$B$2:$B$11)
→ Bu, B2:B11'deki kaç değerin B2'den büyük olduğunu kontrol eder.
→ Eğer B2 bir değerden küçükse TRUE (1), aksi takdirde FALSE (0) döndürür. - * (Çarpma)
→ Bu, iki koşulu birleştirir: - Grup eşleşmesi (A2)
B2'deki değer diğerlerinden küçüktür
→ Yani yalnızca aynı grupta olan ve daha küçük bir değere sahip satırlar sayılacaktır. - SUMPRODUCT(...)
→ İki koşulu da karşılayan satır sayısını toplar. - +1
→ Sıralama 1'den başlar (0 yerine), bu yüzden daha küçük değerlerin sayısına 1 ekleriz.
Formül C2'ye girildikten sonra, otomatik doldurma tutamacını aşağı çekerek bu formülü veri setinizdeki tüm ilgili satırlar için doldurun. Formül, her bir satırın grubunu ve değerini otomatik olarak alacak ve o gruptaki sıralamayı döndürecektir.
İpuçları ve önlemler:
- Aralığınız büyükse, hücre referanslarını buna göre güncellemeyi unutmayın.
- Azalan sırada sıralamalar için (örneğin, en yüksek değer 1 olacak şekilde), formül karşılaştırmasını
B2<$B$2:$B$11
'denB2>$B$2:$B$11
olarak değiştirin. - Tekrarlayan değerlere sahipseniz, bu formül aynı gruptaki eşit değerlere aynı sıralamayı atar. Ardışık benzersiz sıralamalar gerekiyorsa, ek yardımcı sütunlar kullanmayı düşünebilirsiniz.
Bu formül tabanlı yöntem esnektir ve Excel'deki çoğu gruplandırılmış tablo yapısına kolayca uygulanabilir. Ancak çok büyük veri setleri için, hesaplama performansı dizilim mantığına dayandığından yavaşlayabilir.
VBA Kodu - Her bir grup içindeki değerleri otomatik olarak sıralamak için makro kullanın
Sıralama sürecini otomatikleştirmek isteyen kullanıcılar veya daha büyük veri setlerini daha verimli bir şekilde işlemek isteyenler için VBA makrosu yazmak değerli bir yaklaşımdır. Makrolar, tekrar eden adımları otomatikleştirir, daha fazla özelleştirme sağlar ve karmaşık formüllere kıyasla verileri hızlı bir şekilde işler. Bu, zamanlanmış rapor oluşturma, tekrarlanan sıralama görevleri veya çalışma sayfanızda formül karmaşasından kaçınmak istediğiniz senaryolar için idealdir.
Devam etmeden önce, çalışmalarınızı kaydettiğinizden ve Excel ayarlarınızda makroları etkinleştirdiğinizden emin olun. İşte bu çözümü nasıl yazıp çalıştırabileceğiniz:
- Alt + F11 tuşlarına basarak VBA düzenleyicisini açın. Görüntülenen Microsoft Visual Basic for Applications penceresinde Ekle > Modül'e tıklayın, ardından aşağıdaki kodu açılan modüle yapıştırın:
Sub RankValuesByGroup()
Dim DataRange As Range
Dim GroupRng As Range
Dim ValueRng As Range
Dim OutCol As Range
Dim dictGroups As Object
Dim arrValues, arrRanks
Dim i As Long, j As Long
Dim GroupKey As String
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set DataRange = Application.InputBox("Select the data table range (including group and value columns)", xTitleId, Selection.Address, Type:=8)
If DataRange Is Nothing Then Exit Sub
Set GroupRng = Application.InputBox("Select the group column within your range", xTitleId, DataRange.Columns(1).Address, Type:=8)
Set ValueRng = Application.InputBox("Select the value column to rank within your range", xTitleId, DataRange.Columns(2).Address, Type:=8)
Set OutCol = DataRange.Offset(0, DataRange.Columns.Count).Resize(DataRange.Rows.Count, 1)
OutCol.Cells(1).Value = "RankByGroup"
Set dictGroups = CreateObject("Scripting.Dictionary")
arrValues = ValueRng.Value
arrRanks = ValueRng.Value
' Build group dictionaries for ranking
For i = 2 To UBound(arrValues, 1)
GroupKey = GroupRng.Cells(i, 1).Value
If Not dictGroups.Exists(GroupKey) Then
dictGroups.Add GroupKey, CreateObject("System.Collections.ArrayList")
End If
dictGroups(GroupKey).Add arrValues(i, 1)
Next i
' Rank within each group
For i = 2 To UBound(arrValues, 1)
GroupKey = GroupRng.Cells(i, 1).Value
Dim countLower As Long
countLower = 0
For j = 0 To dictGroups(GroupKey).Count - 1
If dictGroups(GroupKey)(j) < arrValues(i, 1) Then
countLower = countLower + 1
End If
Next j
arrRanks(i, 1) = countLower + 1
Next i
' Output results
For i = 2 To UBound(arrRanks, 1)
OutCol.Cells(i, 1).Value = arrRanks(i, 1)
Next i
MsgBox "Ranking by group completed.", vbInformation, xTitleId
End Sub
- Çalıştır'a tıklayın. Bir iletişim kutusu, tam veri aralığınızı, grup sütununu ve değer sütununu seçmenizi isteyecek. Makro, ardından her bir değer için grubun içinde yeni bir sütunda sıralamaları oluşturacaktır.
Notlar ve sorun giderme:
- Sütun seçimlerinin verilerinizle eşleştiğinden emin olun: grup ve değer sütunları doğru şekilde hizalanmalıdır.
- Veri başlığı dahil edilirse, doğru sıralama için koddaki ilk döngü indeksini veri yapınıza göre ayarlayın.
- Azalan sırada sıralamak için,
If dictGroups(GroupKey)(j) < arrValues(i,1)
karşılaştırmasını buna göre değiştirin. - İzin veya makro güvenlik uyarılarıyla karşılaşırsanız, Dosya > Seçenekler > Güven Merkezi altında Excel’in Makro Güvenlik ayarlarını kontrol edin.
Bu VBA yöntemi, özellikle otomatik rapor oluşturma iş akışlarıyla entegre edildiğinde, daha gelişmiş veya ölçeklendirilmiş uygulamalar için esneklik ve güçlü performans sunar.

Kutools AI ile Excel Sihirini Keşfedin
- Akıllı Yürütme: Hücre işlemleri gerçekleştirin, verileri analiz edin ve grafikler oluşturun—tümü basit komutlarla sürülür.
- Özel Formüller: İş akışlarınızı hızlandırmak için özel formüller oluşturun.
- VBA Kodlama: VBA kodunu kolayca yazın ve uygulayın.
- Formül Yorumlama: Karmaşık formülleri kolayca anlayın.
- Metin Çevirisi: Elektronik tablolarınız içindeki dil engellerini aşın.
En İyi Ofis Verimlilik Araçları
Kutools for Excel ile Excel becerilerinizi geliştirin ve daha önce hiç olmadığı kadar verimli olun. Kutools for Excel, üretkenliğinizi artırmak ve zamanınızı kaydetmek için300'den fazla gelişmiş özellik sunar. En çok ihtiyacınız olan özelliği almak için buraya tıklayın...
Office Tab, Office'e sekmeli arayüz getirir ve işinizi çok daha kolaylaştırır
- Word, Excel, PowerPoint'te sekmeli düzenleme ve okuma özelliğini etkinleştirin.
- Aynı pencerenin yeni sekmelerinde birden fazla belge açın ve oluşturun, yeni pencerelerde değil.
- Verimliliğinizi %50 artırır ve her gün yüzlerce fare tıklamasını azaltır!