วิธีติดป้าย / รายการแท็กในสเปรดชีต


14

ฉันเป็นมือใหม่ในสเปรดชีตดังนั้นฉันหวังว่าคุณจะยกโทษให้ฉันถ้าฉันถามคำถามที่ชัดเจนที่สุด

เป็นไปได้หรือไม่ที่จะใช้แท็กใน Excel / Google Spreadsheet ฉันกำลังสร้างสเปรดชีตเพื่อบันทึกบทความและหนังสือทั้งหมดที่ฉันกำลังอ่าน สมมติว่าฉันกำลังอ่าน "I, Claudius" ฉันต้องการให้แท็กเหล่านี้: ประวัติ, นิยาย, ชีวประวัติ, ความพิการ, การเมือง, ละคร จากนั้นหากฉันต้องการแสดงบทความ / หนังสือทั้งหมดที่ติดแท็กด้วย "การเมือง" ฉันอาจค้นหา / แสดง / หมุนด้วยแท็กนั้นได้

อาจจะดีกว่าแท็กทั้งหมดควรอยู่ในเซลล์เดียวโดยแต่ละคำคั่นด้วยเครื่องหมายจุลภาค ถ้าคำแต่ละคำอยู่ในห้องขังของมันเองมันจะทำให้โต๊ะยุ่งเหยิงจริงๆฉันคิดว่า

ฉันเปิดให้โซลูชันการติดฉลากอื่น ๆ ด้วย

ขอบคุณ!


ฉันไม่เคยเห็นโซลูชันแท็กใน excel แต่ไม่ได้บอกว่าไม่มี อาจลองใช้งานEvernote
Raystafarian

คำตอบ:


13

เท่าที่ฉันทราบไม่มีคุณสมบัติในตัวที่สามารถแยกวิเคราะห์และสรุปแท็กที่คั่นด้วยเครื่องหมายจุลภาคใน Excel แน่นอนว่าคุณสามารถสร้างโซลูชันของคุณเองด้วยฟังก์ชั่นแผ่นงานและ VBA เล็กน้อย นี่เป็นวิธีแก้ปัญหาอย่างรวดเร็วสำหรับการทำเช่นนี้

ขั้นตอนที่ 1 : กดAlt+ F11เพื่อเปิดบานหน้าต่างตัวแก้ไข VBA ใน Excel ใส่โมดูลใหม่และวางในรหัสนี้สำหรับฟังก์ชั่นที่กำหนดเอง

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

ฟังก์ชันนี้จะช่วยให้คุณสร้างรายการที่คั่นด้วยเครื่องหมายจุลภาคเพื่อสรุปข้อมูลแท็กที่คุณมี

ขั้นตอนที่ 2 : ในแผ่นงานให้ป้อนเซลล์ (H2 ในตัวอย่างด้านล่าง) แท็กที่คุณต้องการค้นหา ในเซลล์ไปทางขวาให้ป้อนสูตรต่อไปนี้โดยการกดCtrl+ +ShiftEnter

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

โดยการกดCtrl+ Shift+ Enterคุณกำลังเข้าสู่สูตรเป็นสูตรอาร์เรย์ มันจะปรากฏล้อมรอบด้วย{...}ในแถบสูตร โปรดทราบว่าในสูตรเป็นช่วงที่มีแท็กทั้งหมดสำหรับรายการที่ระบุไว้ใน$B$2:$B$6$A$2:$A$6

ป้อนคำอธิบายรูปภาพที่นี่

แก้ไข:
หากคุณไม่คำนึงถึงรายการที่ตรงกันในคอลัมน์แทนที่จะเป็นรายการในเซลล์เดียวคุณสามารถส่งคืนการจับคู่สำหรับแท็กโดยใช้ฟังก์ชั่นแผ่นงานเท่านั้น

ตำแหน่งที่ชื่อของคุณอยู่ในColumn Aนั้นแท็กอยู่ในColumn Bและแท็กที่คุณค้นหาอยู่H2คุณสามารถใช้สูตรอาร์เรย์ต่อไปนี้ในI2และเติมเท่าที่คุณต้องการ:

=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)),"")

ป้อนคำอธิบายรูปภาพที่นี่

สูตรจะทำงานโดยสร้างอาร์เรย์ของตัวเลขก่อนโดยพิจารณาว่าแท็กในแต่ละแถวมีข้อความค้นหาหรือไม่ หากพบการจับคู่หมายเลขแถวจะถูกเก็บไว้ในอาร์เรย์ หากไม่พบ 2000000 จะถูกเก็บไว้ในอาร์เรย์ ถัดไปSMALL(<array>,ROW()-1)ส่วนของสูตรจะส่งคืนค่าที่ROW()-1เล็กที่สุดจากอาร์เรย์ ถัดไปค่านี้จะถูกส่งผ่านเป็นอาร์กิวเมนต์ดัชนีไปยังINDEX()ฟังก์ชันโดยที่ค่าที่ดัชนีนั้นในอาร์เรย์ของชื่อเรื่องถูกส่งคืน หากจำนวนที่มากกว่าจำนวนแถวในอาร์เรย์หัวเรื่องถูกส่งไปINDEX()เป็นอาร์กิวเมนต์จะส่งคืนข้อผิดพลาด เนื่องจาก 2000000 ถูกส่งเป็นอาร์กิวเมนต์เมื่อไม่พบข้อมูลที่ตรงกันข้อผิดพลาดจะถูกส่งกลับ IFERROR()ฟังก์ชั่นแล้วส่งกลับ""ในกรณีนี้

สิ่งสำคัญคือต้องเข้าใจวิธีROW()การใช้ในสูตรนี้ หากคุณต้องการแสดงรายการผลลัพธ์ของคุณที่เริ่มต้นในแถวที่แตกต่างกันคุณจะต้องปรับอาร์กิวเมนต์ที่สองของSMALL()ฟังก์ชันเพื่อให้ส่งคืนค่าที่เล็กที่สุดจากอาร์เรย์ เช่นถ้ารายชื่อของผลการเริ่มต้นในแถวที่ 1 แทนแถวที่ 2 คุณจะใช้แทนSMALL(...,ROW())SMALL(...,ROW()-1)

นอกจากนี้หากรายการชื่อและแท็กของคุณไม่ได้เริ่มในแถวที่ 1 คุณจะต้องปรับสูตรเช่นกัน อาร์กิวเมนต์ที่สองของIF()การทำงานจะต้องมีการปรับเพื่อให้การแข่งขันในแถวแรกของผลตอบแทน 1. ข้อมูลของคุณเช่นถ้ารายการของชื่อจะเริ่มต้นในแถวที่ 2 แทนแถวที่ 1 คุณจะต้องสูตรที่จะรวมแทนIF(...,ROW($A$2:$A$7)-1,...)IF(...,ROW($A$1:$A$6),...)


ว้าวมันใช้งานได้ดีมาก! ฉันชอบมันใน Google Spreadsheet แต่ใช้จาวาสคริปต์ ฉันจะลองทำสิ่งที่คล้ายกันที่นั่นแม้ว่าฉันจะเป็นผู้เริ่มต้นใช้ภาษา อีกสองคำถาม: ข้อมูล "สรุป" หมายความว่าอย่างไร รหัสของคุณในขั้นตอนที่ 1 ทำอะไร ฉันถามคำถามนี้โดยเฉพาะเพราะฉันคิดว่าฉันอาจต้องทำสิ่งเดียวกันกับ JavaScript ใน Google Spreadsheet ขอบคุณมากสำหรับการแก้ปัญหาของคุณ!
nusantara

เยี่ยมมากฉันดีใจที่มีการใช้งาน โดย "สรุป" ฉันแค่หมายถึงการสร้างรายการที่ตรงกันคั่นด้วยเครื่องหมายจุลภาค VBA นั้นจำเป็นสำหรับวัตถุประสงค์นี้ ด้วยฟังก์ชั่น Excel ในตัวมันค่อนข้างตรงไปตรงมาในการสร้างสูตรอาร์เรย์ที่สามารถเลือกแท็กที่ตรงกันได้ อย่างไรก็ตามไม่สามารถส่งคืนผลลัพธ์เหล่านี้ในเซลล์เดียวโดยไม่มี VBA เนื่องจากCONCATENATEฟังก์ชันใน Excel ไม่สามารถใช้อาร์เรย์เป็นอาร์กิวเมนต์ได้ (อ่านเฉพาะรายการแรกจากอาร์เรย์หากคุณลอง) ฟังก์ชัน VBA สร้างขึ้นเพื่อสร้างรายการที่คั่นด้วยเครื่องหมายจุลภาคจากอาร์เรย์ของค่า
Excellll

หลังจากเขียนคำตอบข้างต้นฉันรู้ว่ามีวิธีการทำสิ่งที่คล้ายกันโดยไม่ VBA แทนที่จะส่งคืนรายการของชื่อที่ตรงกันในเซลล์เดียวคอลัมน์ของรายการที่ตรงกันสามารถส่งคืนได้ ฉันสามารถแก้ไขโพสต์เพื่อรวมวิธีนี้ได้เช่นกันหากคุณสนใจ
Excellll

เป็นไปได้โดยไม่ VBA? ฉันคิดว่าคงจะดีกว่านี้ ถ้ามันไม่สะดวกเกินไปใช่มันจะยอดเยี่ยมถ้าคุณมีวิธีที่คุณพูดถึง มันจะเป็นประโยชน์กับทุกคนที่ค้นหาหัวข้อนี้! ขอบคุณที่อธิบาย "บทสรุป" ฉันลองเรียงต่อกันด้วย แต่ใช่ไม่สามารถใช้อย่างที่ฉันต้องการ ตอนนี้ฉันรู้ว่ามันไม่สามารถทำงานได้เหมือนข้อโต้แย้ง
nusantara

ใช่มันเป็นไปได้ ฉันจะลองโพสต์วิธีแก้ปัญหาที่นี่ในไม่กี่นาที ขออภัยในความล่าช้า!
Excellll

2

ในขณะที่ทำสิ่งนี้โดยทางโปรแกรมใช้งานได้ดีในบางกรณีฉันพบว่าวิธีการด้วยตนเองใช้งานได้สำหรับฉัน การใช้คอลัมน์สำหรับแท็กคุณสามารถติดแท็กรายการแถวได้อย่างง่ายดายโดยการป้อน 0 ลงในคอลัมน์ จากนั้นคุณมีหนึ่งแถวและป้อน 1s ในแต่ละคอลัมน์แท็กสำหรับแถวนั้น (คุณสามารถระบายสีแถวนี้) จากนั้นเมื่อคุณเรียงลำดับโดยหนึ่งในแท็กแถว 1s (สีน้ำเงิน) ทำหน้าที่เป็นตัวคั่น ระหว่างผลลัพธ์ที่กรอง (0 วินาที) ของคุณกับสิ่งอื่น (_)

สิ่งนี้มีข้อดีอยู่บ้าง 1. คุณไม่จำเป็นต้องพิมพ์แท็กในแต่ละครั้ง 2. คุณสามารถทำการอ้างอิงไขว้ได้อย่างง่ายดายเพื่อตรวจสอบว่าคุณมีรายการที่ซ้ำกันหรือคล้ายกันที่สามารถลดเป็นหนึ่ง


1

ความคิดอื่น:

ใช้ฟังก์ชั่นตัวกรอง inbuilt กรองตามคอลัมน์แท็กจากนั้นคุณสามารถค้นหาแถวที่มีแท็กที่กำหนด

แถวที่มีรายการแท็ก: ตลกสยองขวัญโรแมนติก

จะปรากฏขึ้นเมื่อค้นหาแท็กสามแท็กเหล่านี้


1

วิธีการที่ไม่ใช่ VBA ของฉันคือการแสดงรายการแท็กในหนึ่งคอลัมน์ (สมมุติว่าคอลัมน์ H) โดยคั่นรายการด้วยเครื่องหมายจุลภาค จากนั้นฉันใช้ "Text to Columns" และ "Remove Duplicates" เพื่อรับรายการแท็กของฉัน ฉันคัดลอกสิ่งนี้ลงในแถวส่วนหัวของแผ่นงานหลักของฉัน (ในกรณีนี้เริ่มต้นในคอลัมน์ L จากนั้นในแต่ละเซลล์ด้านล่างส่วนหัวแท็กแต่ละรายการให้ป้อนข้อมูลต่อไปนี้:

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

สิ่งนี้มอบสิ่งที่ดีที่สุดของทั้งสองโลก - คอลัมน์แท็ก (H) เป็นเรื่องง่ายสำหรับผู้อ่าน คอลัมน์แท็กแต่ละรายการ (ที่มี 0 และ 1 ของพวกเขา) นั้นง่ายสำหรับการอ่านคอมพิวเตอร์ เป็นแบบไดนามิกหากคุณยังคงอยู่ในชุดแท็กที่กำหนด ถ้าไม่คุณต้องเพิ่มแท็กใหม่ลงในแถวส่วนหัวแล้วคัดลอกสูตรของคุณไป

Pivot-Tables คือเพื่อนของคุณ


0

ยังไม่ชัดเจนสำหรับฉันว่าคุณต้องการใช้แท็กอย่างไร แต่ใน Google ชีตคุณสามารถใช้ฟังก์ชั่นSPLIT ()เพื่อแยกสตริงของแท็ก (คั่นด้วยช่องว่างเครื่องหมายจุลภาคหรืออะไรก็ได้ที่คุณต้องการ) ลงในเซลล์อื่น ๆ และฉันแน่ใจว่าแม้ Excel จะมีฟังก์ชันที่สามารถค้นหา เซลล์สำหรับแท็ก

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.