Excel'de bir alt küme oluşturma


3

Yerleşik excel işlevlerini (mümkünse vba değil) kullanarak yeni bir sütunda alt küme oluşturma hakkında ne düşünüyorsunuz. Önceden alt kümede tutulan herhangi bir sayı ya da alt kümeden kaldırılacak olan 0 olan bir veri noktaları sütunu oluşturdum. Konsept bir filtre kullanmaya benzer, ancak bir filtre kullanmak bir seçenek değildir, çünkü alt küme sütununun otomatik olarak oluşturulması gerekir. Alt küme, veriler arasında boş satır olmamalıdır. Örneğin, sütun 1 (orijinal küme) ve sütun 2 (alt küme):

Sütun 1 Sütun 2
5 5
1 1
0 4
4 3
0 2
3
2

Şimdiden teşekkürler.


1
Bunun için VBA'ya ihtiyacınız var
isJustMe

Sütun1'i oluşturuyorsanız, neden yalnızca ne yaptığınızı basitçe değiştirmiyorsunuz? değil sıfır değerler yaratılsın mı? Formula ile böyle bir şey yapmanın bir yolu olduğundan eminim, ancak VBA'da çok daha kolay olurdu. Ayrıca, bu bir programlama Site, özellikle işlev kesmek için arıyorsanız, bunun yerine SuperUser.com'a gönderilmesini öneririm.
David Zemens

Yararlı olması durumunda 0 içeren ilk sütundaki tüm hücreleri silmek için: Verileri vurgulayın ve Değiştir için Ctrl-H tuşlarına basın; 0 yazın ancak değiştirme kutusunu boş bırakın, ardından Tümünü Değiştir; sütundaki verileri tekrar vurgulayın ve Ctrl-G (GoTo) tuşunu kullanın, Özel'i tıklayın ve tüm boşlukları bulun. Excel 2007/10 uygulamasında Giriş Sekmesini, Hücreler Grubunu, Sil ve Hücreleri Sil, Hücreleri Kaydır'ı seçin. Diğerlerinin de belirttiği gibi, uygun bir formül düşünmüyorum - sonuçta, açıklamanız gerçekten yapmanız gerektiğini gösteriyor Kaldır değerler.

Yanıtlar:


1

Bu, VBA'da gerçekten kolay olacak ve alt listenin oluşturulacağı hücre aralığını seçmek ve çıktının görünmesini istediğiniz sütunun tanımlanmasını belirlemek dışında kullanıcıdan müdahale gerektirmez:

Sub CreateSubSetList()
Dim rng As Range: Set rng = Application.InputBox("Select the column which contains your list", "Select column", Type:=8)
Dim colNum As Variant: colNum = Application.InputBox("Input the destination column letter", "Destination Column?")
Dim oRng As Range
Dim cl As Range
Dim c As Long: c = 1
    If rng Is Nothing Then Exit Sub
    Set rng = rng.Columns(1)
    Set oRng = Range(Columns(colNum).Address).Columns(1)
    If oRng Is Nothing Then Exit Sub
    For Each cl In rng.Cells
        If Not cl.Value = 0 Then
            oRng.Cells(c).Value = cl.Value
            c = c + 1
        End If
    Next
End Sub

0

Sütun 1 verilerinin A1: A7, ardından Ctrl + vardiya + Girmek tam formül B1: B7 aralığında aşağıdaki formülü takip edin veya aşağı ve aşağı kaydırın.

=IFERROR(INDEX($A$1:$A$7,SMALL(IF($A$1:$A$7<>0,ROW($A$1:$A$7)),ROW()),),"").

Not iferror yalnızca Excel 2007’den sonra çalışır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.