วิธีการตั้งค่าอย่างง่ายในกระดาษคำนวณของ Google เอกสาร


10

สมมติว่าฉันมีชื่อบางส่วนในเซลล์B1:B3และรายการเต็มรูปแบบของชื่อที่อยู่ในทั้งหมดA1:A4ก็เป็นไปได้สำหรับผมที่จะสร้างรายชื่อในA1:A4ที่ไม่ปรากฏในB1:B3?

เช่นเซลล์A1:A4มี "A", "B", "C", "D" ถ้าB1:B3มี "A", "C", "D" ดังนั้นฉันต้องการรับ "B"

ฉันดูรายการฟังก์ชั่นแต่ไม่สามารถหาวิธีทำได้

อัปเดต : ด้วยความช่วยเหลือของแลนซ์สูตรที่ฉันใช้คือ:

FILTER(A1:A4, A1:A4<>B1, A1:A4<>B2, A1:A4<>B3)

สิ่งนี้ให้ผลลัพธ์ที่ถูกต้อง แต่ฉันยังคงมีปัญหา ปัญหาคือเซลล์ของฉันB1:Bxสามารถขยายได้ ฉันจัดการทีมกีฬาและใช้แบบฟอร์ม Google เอกสารเพื่อให้ผู้คนส่งพวกเขาเลือกชื่อของพวกเขาจากรายการที่เลือกและเลือกปุ่มตัวเลือก "ใช่" (ฉันสามารถเล่นได้) หรือ "ไม่" (ฉันไม่อยู่) สิ่งที่ฉันต้องการบรรลุที่นี่คือการแสดงในสเปรดชีตของฉันคนที่ไม่ได้ตอบสนอง เป้าหมายคือการอัพเดตรายการนี้โดยอัตโนมัติหลังจากส่งใหม่แต่ละครั้ง น่าเสียดายที่เมื่อกรอกแถวใหม่ในสเปรดชีตสูตรจะถูกทำให้แน่น ฉันไม่แน่ใจว่ามีวิธีแก้ปัญหาสำหรับเรื่องนี้หรือไม่

อัปเดต 2 : ฉันพบวิธีแก้ไข ผมคัดลอกเซลล์จากB1:Bxไปยังพื้นที่อื่นC1:Cxเป็นครั้งแรกที่ใช้แล้วสูตรข้างต้น C1:Cxแต่กับ แม้ตอนนี้จะB1:Bxขยายตัวสูตรยังคงใช้ได้


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

@ Lance ฉันพบวิธีแก้ปัญหาและอัปเดตโพสต์ของฉันอีกครั้ง ขอบคุณ
grokus

1
เป็นคำถามที่ดีฉันพบในขณะที่ค้นหาคำตอบนี้ด้วยตัวเอง วิธีแก้ปัญหาของคุณค่อนข้างดี แต่ฉันคิดว่าในที่สุดฉันก็จะได้สิ่งที่คุณต้องการอย่างแน่นอน ตรวจสอบคำตอบของฉันด้านล่าง
Anthony DiSanti

คำตอบ:


5

ว้าวฉันจะให้คำตอบที่ถูกต้องแก่คุณ Google เอกสารน่าผิดหวังมาก เมืองลูปสคริปต์

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


1
ฉันพบว่าการใช้ Chrome นั้นดีกว่ามากเมื่อจัดการกับ Google เอกสาร
grokus

วันนี้บ้าสำหรับฉัน แต่ถ้าฉันจำได้ฉันจะหยุดในสัปดาห์หน้า (ถ้ายังหาคำตอบไม่ได้)
Lance Roberts

ไม่เป็นไรฉันสามารถใช้ตัวกรองเพื่อให้ได้ผลลัพธ์ตามที่ต้องการ ขอบคุณ
grokus

@grokus เยี่ยมมากคุณควรโพสต์สูตรที่คุณใช้สำหรับการอ้างอิงของผู้อ่านในอนาคต
Lance Roberts

ฉันอัพเดทโพสต์ดั้งเดิมของฉัน
grokus

4
=FILTER(A:A, NOT(COUNTIF(B:B, A:A)))

COUNTIFนับจำนวนครั้งที่ผู้เล่นแต่ละคนในคอลัมน์Aปรากฏในคอลัมน์Bและส่งกลับอาร์เรย์ของการนับ

NOT ปลดเปลื้องตัวเลขให้เป็นค่าบูลีน (จริงหรือเท็จ) จากนั้นจึงกลับด้าน

FILTERลบผู้เล่นที่ปรากฏในBรายการตอบกลับคอลัมน์

เคล็ดลับที่นี่คือมันNOTทำให้จำนวนบูลีน หากผู้เล่นไม่ตอบสนองพวกเขาจะปรากฏขึ้น 0 ครั้งในรายการคำตอบ หากพวกเขาตอบกลับพวกเขาจะปรากฏ 1 ครั้งขึ้นไป (อาจเป็นผู้เล่นที่พยายามเปลี่ยนคำตอบโดยส่งแบบสำรวจอีกเป็นครั้งที่สอง) 0 ปลดเปลื้องไปFalseและตัวเลขอื่น ๆ Trueทั้งหมดโยนไป เพื่อให้ผู้เล่นที่มีการตอบสนองแผนที่และผู้ที่ยังไม่ได้ตอบสนองต่อการแผนที่ True จากนั้นนำสิ่งที่ตรงกันข้ามมามอบหน้ากากของผู้เล่นเหล่านั้นเพื่อตอบโต้FalseNOT

โซลูชันนี้รองรับรายการที่เพิ่มขึ้นของการส่งซึ่งอาจมีแถวว่างหรือการส่งซ้ำ ในการ จำกัด ช่วงเฉพาะที่อธิบายไว้ในคำถามใช้:=FILTER(A1:A4, NOT(COUNTIF(B:B,A1:A4)))


อัจฉริยะ 20charlimit
Fadeway

0

นี่คือสเปรดชีตที่แสดงว่าสามารถทำได้อย่างง่ายดาย:

ตั้งค่าการทำงานใน Google ชีต

ยูเนี่ยนคือ ={setA; setB}

ความแตกต่างคือ =filter(setA, iferror(MATCH(setA, setB, false)))

แยกเป็น =filter(setA; MATCH(setA, setB, false))

คำอธิบาย setAและsetBสามารถตั้งชื่อช่วงหรือคุณสามารถใช้สัญกรณ์ช่วงปกติ ช่วงที่มีชื่อทำให้ชัดเจนยิ่งขึ้น

Union เป็นเพียงช่วงใหม่ที่สร้างขึ้นโดยการวางสองช่วง

สี่แยก (ถัดง่ายที่สุด) ขึ้นอยู่กับการมองหาดัชนีsetAในsetBที่ที่พวกเขาออกและกรอง Seta โดยที่

ความแตกต่างจะคล้ายกัน แต่ตัวกรองsetAที่จะเลือกออกเฉพาะสมาชิกเท่านั้นที่หาดัชนีในsetBไม่พบ

สินเชื่อพิเศษ

ยูเนี่ยนที่มีการคัดออกซ้ำซ้อนเป็นเพียงsetA + (setB-setA)ดังนั้นตามข้างต้น

={setA;filter(setB, iserror(MATCH(setB,setA,false)))}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.