Excel'de değerleri gruplara göre nasıl sıralarız?
Excel'de gruplandırılmış verilerle çalışmak, genellikle her gruptaki değerleri karşılaştırmayı gerektirir; örneğin bölgeye göre satış rakamlarını, 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 (aynı zamanda "grup bazında sıralama" veya "koşullu sıralama" olarak da adlandırılır) belirli bir yaklaşım gerektirir. Bu özellikle, gruplar arası sonuçları karıştırmadan farklı kategoriler arasında performans değerlendirmesi yapmanız veya en iyi ve en düşük kayıtları belirlemeniz gerektiğinde kullanışlıdır. Aşağıdaki yöntemler, gruplara göre değerleri sıralamak için pratik çözümleri ele alarak günlük görevlerde verilerinizi doğru bir şekilde yorumlamanızı ve analiz etmenizi kolaylaştırır.
Gruplara göre değerleri sırala
VBA Kodu - Her gruptaki 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ı gruplar içinde değerleri sıralamanız gereken 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 olmadan grup bazında sıralamayı 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 değeri yalnızca belirlenen grubu içinde karşılaştırmanıza olanak tanır ve her veri noktası için gerekli sıralamayı üretir.
Aşağıdaki adımları izleyin:
- Grup (A2:A11) ve Değer (B2:B11) gibi sütunlarda gruplandırılmış verilerinizi hazırlayın.
- Verilerinizin yanındaki boş bir hücre seçin — genellikle değerlerinizin yanındaki ilk satırda olur, ö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 değerlerden kaçının şu anki değerden küçük olduğunu sayarak çalışır. İşte her parametrenin anlamı:
- ($A$2:$A$11=A2)
→ Bu, A2:A11 aralığındaki her hücrenin A2'deki değere eşit olup olmadığını kontrol eder.
→ Bu, her satırın A2 ile aynı gruba ait 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 değerlerden kaçının B2'den büyük olduğunu kontrol eder.
→ Eğer B2 belirli 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 olan satırlar sayılacaktır. - SUMPRODUCT(...)
→ Her iki koşulu da karşılayan satır sayısını toplar. - +1
→ Sıralamalar 1'den başlar (0 yerine), bu yüzden daha küçük değerlere 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 satırın grubunu ve değerini otomatik olarak ayarlayarak o gruptaki sıralamayı döndürür.
İpuçları ve önlemler:
- Eğer aralığınız büyükse, hücre referanslarını buna göre güncellemeyi unutmayın.
- Azalan düzende sıralamalar için (örneğin, en yüksek değer 1 ise), formül karşılaştırmasını
B2<$B$2:$B$11
'denB2>$B$2:$B$11
olarak değiştirin. - Yinelenen değerlere gelince, bu formül aynı gruptaki eşit değerlere aynı sırayı atar. Eğer ardışık benzersiz sıralara ihtiyacınız varsa, ek yardımcı sütunlar kullanmayı düşünün.
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, dizi mantığına dayalı olduğundan hesaplama performansı yavaşlayabilir.
VBA Kodu - Her gruptaki 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, tekrarlayan adımları otomatikleştirebilir, daha fazla özelleştirme sağlayabilir ve karmaşık formüllere kıyasla verileri hızlı bir şekilde işleyebilir. Bu, planlanmış rapor oluşturma, tekrarlanan sıralama görevleri veya çalışma sayfanızda formül karmaşasından kaçınmak istediğiniz durumlar 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 kodlayabileceğiniz ve çalıştırabileceğiniz:
- VBA düzenleyicisini etkinleştirmek için Alt + F11 tuşlarına bası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 isteyecektir. Makro, ardından her bir değerin grubu içindeki sıralarını içeren yeni bir sütun oluşturacaktır.
Notlar ve sorun giderme:
- Sütun seçimlerinin verilerinizle eşleştiğinden emin olun: grup ve değer sütunlarının doğru şekilde hizalanması gerekir.
- Veri başlığı dahil edilmişse, doğru sıralama için koddaki başlangıç döngüsü indeksini (veri yapınıza göre) ayarlayın.
- Azalan düzende 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ındaki Excel Makro Güvenlik ayarlarını kontrol edin.
Bu VBA yöntemi, özellikle otomatik raporlama 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 güçlendirin, daha önce hiç yaşamadığınız bir verimlilik deneyimini yaşayın. Kutools for Excel, üretkenliğinizi artıracak ve zamanı kaydetmenizi sağlayacak300’den fazla gelişmiş özellik sunar. En çok ihtiyaç duyduğunuz özelliği almak için buraya tıklayın...
Office Tab, Office’e sekmeli arayüz kazandırır ve işinizi çok daha kolaylaştırır
- Word, Excel, PowerPoint’te sekmeli düzenleme ve okuma işlevini etkinleştirin.
- Aynı pencere içerisinde yeni sekmelerde birden fazla belge açın veya oluşturun, yeni pencerelerde açmak yerine.
- Verimliliğinizi %50 artırın, her gün yüzlerce fare tıklamasını sizin için azaltın!