Bir Elektronik Tablodaki Öğeleri Etiketleme / Etiketleme


15

Elektronik tablolarda acemi biriyim, bu yüzden çok açık bir soru sorarsam beni affedersiniz.

Etiketleri Excel / Google E-Tabloda kullanmak mümkün mü? Okuduğum tüm makaleleri ve kitapları kaydetmek için bir e-tablo oluşturuyorum. "Ben Claudius" okuduğumu söyle. Bu etiketleri vermek istiyorum: tarih, kurgu, biyografi, engellilik, politika, drama. Daha sonra, "politika" ile etiketlenmiş tüm makaleleri / kitapları görüntülemek istersem, belki de bu etiketle arama / görüntüleme / özetleme yapabilirim.

Belki de tercihen, etiketlerin her biri bir virgülle ayrılmış bir kelimenin içinde olmalıdır. Her kelime kendine ait bir hücrede olsaydı, bence masayı gerçekten dağınık hale getirirdi.

Diğer etiketleme çözümlerine de açığım.

Teşekkürler!


Excel'de hiç bir etiket çözümü görmedim, ama bu bir tane olmadığını söylemiyor. Belki kontrol Evernote
Raystafarian

Yanıtlar:


13

Bildiğim kadarıyla Excel'de virgülle ayrılmış etiketleri ayrıştırabilecek ve özetleyebilecek yerleşik özellikler yoktur. Tabii ki, çalışma sayfası işlevleri ve küçük bir VBA ile kendi çözümünüzü oluşturabilirsiniz. İşte bunu yapmak için hızlı bir çözüm.

Adım 1 : VBA düzenleyici bölmesini Excel'de açmak için Alt+ tuşuna basın F11. Yeni bir modül ekleyin ve özel bir işlev için bu koda yapıştırın.

Public Function CCARRAY(rr As Variant, sep As String)
'rr is the range or array of values you want to concatenate.  sep is the delimiter.
Dim rra() As Variant
Dim out As String
Dim i As Integer

On Error GoTo EH
rra = rr
out = ""
i = 1

Do While i <= UBound(rra, 1)
    If rra(i, 1) <> False Then
        out = out & rra(i, 1) & sep
    End If
    i = i + 1
Loop
out = Left(out, Len(out) - Len(sep))
CCARRAY = out
Exit Function

EH:
rra = rr.Value
Resume Next

End Function

Bu işlev, sahip olduğunuz etiket verilerini özetlemek için virgülle ayrılmış listeler oluşturmanıza olanak tanır.

Adım 2 : Bir çalışma sayfasına, aramak istediğiniz etiketi bir hücreye (aşağıdaki örnekte H2) girin. Sağdaki hücrede, Ctrl+ Shift+ tuşlarına basarak aşağıdaki formülü girin Enter.

=IFERROR(CCARRAY(IF(NOT(ISERROR(FIND(H2,$B$2:$B$6))),$A$2:$A$6),", "),"No matches found.")

Ctrl+ Shift+ Tuşlarına basarak Enter, formülü bir dizi formülü olarak girersiniz. {...}Formül çubuğunda çevrili görünecektir . Formülde $B$2:$B$6, listelenen öğeler için tüm etiketleri içeren aralık olduğunu unutmayın $A$2:$A$6.

resim açıklamasını buraya girin

DÜZENLEME:
Eşleşmelerinizin bir hücredeki liste yerine bir sütunda listelenmesini önemsemiyorsanız, yalnızca çalışma sayfası işlevlerini kullanarak etiketler için eşleşmeler döndürebilirsiniz.

Başlıklarınızın içinde olduğu durumlarda Column A, etiketler içindedir Column Bve aradığınız etiketi ise H2şu kullanabilirsiniz, dizi formülünü içinde I2ve ihtiyacınız kadar aşağı doldurun:

=IFERROR(INDEX($A$1:$A$6,SMALL(IF(NOT(ISERROR(FIND($H$2,$B$1:$B$6))),ROW($B$1:$B$6),2000000),ROW()-1)),"")

resim açıklamasını buraya girin

Formül, önce her satırdaki etiketlerin arama terimini içerip içermediğine bağlı olarak bir sayı dizisi oluşturarak çalışır. Bir eşleşme bulunursa, satır numarası dizide saklanır. Bulunmazsa, 2000000 dizide saklanır. Ardından, SMALL(<array>,ROW()-1)formülün bir kısmı ROW()-1dizideki en küçük değeri döndürür . Daha sonra, bu değer, INDEX()başlık dizisindeki o dizindeki değerin döndürüldüğü işleve bir dizin bağımsız değişkeni olarak iletilir . Başlık dizisindeki satır sayısından büyük bir sayı INDEX()bağımsız değişken olarak iletilirse , hata döndürülür. Herhangi bir eşleşme bulunmadığında 2000000 argüman olarak geçirildiğinden, bir hata döndürülür. IFERROR()Fonksiyon sonra döner ""bu durumda.

ROW()Bu formülde nasıl kullanıldığını kavramak önemlidir . Sonuç listenizi farklı bir satırdan başlayarak görüntülemek istiyorsanız, SMALL()işlevin ikinci bağımsız değişkenini diziden ilk en küçük değeri döndürecek şekilde ayarlamanız gerekir . Sonuçların listeniz Row 1 yerine Row 2 başlarsa Örneğin, şunları kullanırsınız SMALL(...,ROW())yerine SMALL(...,ROW()-1).

Ayrıca, başlık ve etiket listeniz Satır 1'de başlamazsa, formülü de ayarlamanız gerekir. İkinci argüman IF()işlevine Row 2 yerine 1 satırına başlıkları başlar Listenizi eklemek formül gerekir eğer verilerinizin ilk satırda bir maç, 1. Örn döndürmesini sağlayacak şekilde ayarlanmalıdır IF(...,ROW($A$2:$A$7)-1,...)yerine IF(...,ROW($A$1:$A$6),...).


Vay canına, bu mükemmel çalışıyor! Yine de Google E-Tabloda tercih ediyorum. Ancak JavaScript kullanır. Dille tam ve mutlak bir başlangıç ​​yapsam da orada benzer bir şey yapmaya çalışacağım. Sadece iki soru daha: Verileri "özetlemek" ne anlama geliyor? 1. adımdaki kodunuz ne işe yarar? Bu soruyu özellikle soruyorum çünkü aynı şeyi Google E-Tablodaki JavaScript ile yapmak zorunda kalabileceğimi düşünüyorum. Çözümünüz için çok teşekkürler!
nusantara

Harika, işe yaradığına sevindim. "Özetle" demek istediğim, sadece virgülle ayrılmış eşleşen başlık listesi oluşturmak demek. VBA bu amaç için gereklidir. Yerleşik Excel işlevleriyle, eşleşen etiketleri seçebilen bir dizi formülü oluşturmak oldukça kolaydır. Ancak, bu sonuçları VBA'sız bir hücreye döndürmek mümkün değildir, çünkü CONCATENATEExcel'deki işlev bir diziyi bağımsız değişken olarak alamaz (yalnızca denerseniz dizideki ilk öğeyi okur). VBA işlevi, bir değer dizisinden virgülle ayrılmış listeler oluşturmak için yapılır.
Mart'ta Excellll

Yukarıdaki yanıtı yazdıktan sonra, VBA olmadan benzer bir şey yapmanın bir yolu olduğunu fark ettim. Bir hücrede eşleşen başlıkların listesini döndürmek yerine, eşleşen başlıkların bir sütunu döndürülebilir. İlginizi çekiyorsa da bu yöntemi eklemek için yazımı düzenleyebilirim.
Mart'ta Excellll

VBA olmadan mümkün mü? Bence bu daha iyi olurdu. Çok rahatsız edici değilse, evet, bahsettiğiniz yöntemi ekleyebilmeniz harika olurdu. Bu konuyu arayan herkes için çok yararlı olur! "Özetlemeyi" açıkladığınız için teşekkürler. Ben de bitiştirmeyi denedim ama evet, istediğim gibi kullanamadım. Şimdi bunun bir argüman gibi davranamayacağını biliyorum.
nusantara

Evet mümkün. Birkaç dakika içinde çözümü buraya göndermeye çalışacağım. Gecikme için üzgünüm!
Excellll

2

Bunu programlı olarak yaparken bazı durumlarda benim için işe yarayan manuel bir yaklaşım buldum. Etiketler için sütunları kullanarak, sütuna 0 girerek bir satır öğesini kolayca etiketleyebilirsiniz. Daha sonra bir satırınız olur ve bu satırın etiket sütunlarının her birine 1'ler girersiniz (bu satırı renklendirebilirsiniz). Sonra etiketlerden birine göre sıraladığınızda 1s (mavi) satır ayırıcı görevi görür. Filtrelenen sonuçlarınız (0'lar) ve diğer her şey (_) arasında.

Bunun birkaç avantajı vardır. 1. Etiketinizi her seferinde yazmak zorunda değilsiniz. 2. Birine indirgenebilecek yinelenen veya benzer öğelerinizin olup olmadığını kontrol etmek için referansı kolayca çaprazlayabilirsiniz.


1

Diğer bir fikir:

Dahili filtre işlevini kullanın. Etiketler sütununa göre filtreleyin, ardından belirli bir etiketi içeren satırları arayabilirsiniz.

Etiket listesiyle bir satır: komedi, korku, romantizm

bu üç etiketten herhangi birini ararken görünür.


1

VBA olmayan yaklaşımım, öğeleri virgülle ayırarak etiketleri bir sütunda (diyelim H sütunu) listelemektir. Oradan, etiketler listemi almak için "Sütunlara Metin" ve "Yinelenenleri Kaldır" ın bir kombinasyonunu kullanıyorum. Bunu, ana sayfamın başlık satırına kopyalarım (bu durumda, L sütunundan başlayarak, tek tek etiket başlıklarının altındaki her hücrede aşağıdakileri girin:

=IF((ISNUMBER(SEARCH(L$1,$H2)))=TRUE,1,0)

Bu her iki dünyanın en iyisini verir - etiket sütunu (H) insanların okuması kolaydır; ayrı etiket sütunları (0'ları ve 1'leri ile) bilgisayarın okuması kolaydır. Verilen etiket kümesinin içinde kalırsanız dinamiktir; değilse, yeni etiketinizi başlık satırına eklemeniz ve ardından formüllerinizi kopyalamanız gerekir.

Oradan, Pivot-Masalar arkadaşın.


0

Etiketleri tam olarak nasıl kullanmak istediğiniz benim için net değil. Ancak Google E-Tablolar'da, bir dizi etiketi (boşluk, virgül veya istediğiniz herhangi bir şeyle ayrılmış) diğer hücrelere bölmek için SPLIT () işlevini kullanabilirsiniz ve Excel'in bile bir etiketi.

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.