ส่งคืนเซลล์ว่างจากสูตรใน Excel


219

ฉันต้องการส่งคืนเซลล์ว่างจากสูตร Excel แต่ปรากฏว่า Excel ปฏิบัติกับสตริงว่างหรือการอ้างอิงไปยังเซลล์ว่างแตกต่างจากเซลล์ว่างเปล่าที่แท้จริง โดยพื้นฐานแล้วฉันต้องการอะไรแบบนั้น

=IF(some_condition,EMPTY(),some_value)

ฉันพยายามทำสิ่งต่าง ๆ เช่น

=IF(some_condition,"",some_value)

และ

=IF(some_condition,,some_value)

และสมมติว่า B1 เป็นเซลล์ว่าง

=IF(some_condition,B1,some_value)

แต่ดูเหมือนว่าเซลล์เหล่านี้จะไม่ว่างเปล่าจริง ๆ ฉันเดาว่าเพราะมันเป็นผลลัพธ์ของสูตร มีวิธีการเติมเซลล์หรือไม่หากเงื่อนไขตรงตามเงื่อนไขและทำให้เซลล์ว่างเปล่าอย่างแท้จริง?

แก้ไข: ตามที่แนะนำฉันพยายามคืน NA () แต่สำหรับวัตถุประสงค์ของฉันสิ่งนี้ก็ไม่ได้ผลเช่นกัน มีวิธีการทำเช่นนี้กับ VB หรือไม่?

แก้ไข: ฉันกำลังสร้างแผ่นงานที่ดึงข้อมูลจากแผ่นงานอื่นที่จัดรูปแบบตามความต้องการเฉพาะของแอปพลิเคชันที่นำเข้าข้อมูลไปยังฐานข้อมูล ฉันไม่สามารถเข้าถึงเพื่อเปลี่ยนแปลงการใช้งานแอปพลิเคชันนี้และล้มเหลวหากค่าเป็น "" แทนที่จะว่างเปล่าจริง ๆ


8
คุณช่วยอธิบายได้ไหมว่าทำไมเซลล์ต้องว่างเปล่า ทั้งนี้ขึ้นอยู่กับสิ่งที่ "blankness" ทำให้คุณมีอาจมีวิธีแก้ปัญหา
JT Grimes

3
เซลล์มีสูตรใช่ไหม มันจะว่างเปล่าหรือว่างเปล่าได้อย่างไร?
Sinan Ünür

8
ฉันมีปัญหาที่คล้ายกันฉันกำลังวาดกราฟและไม่ต้องการแสดงค่า 0 สำหรับรายการว่างบนกราฟ หากบันทึกเป็นเซลล์ว่างมันจะตัดพวกเขาออกจากกราฟ แต่วิธีการใด ๆ ที่ระบุไว้ใน "คำตอบ" ด้านล่างจะแสดงผลลัพธ์เป็น 0 ในกราฟ :(
Cobusve

5
เพื่อหลีกเลี่ยงไม่ให้เลขศูนย์แสดงบนกราฟให้ใช้ฟังก์ชัน NA () แทนสตริงว่าง / ศูนย์ สิ่งนี้จะใส่ # N / A ในเซลล์ซึ่งจะถูกละเว้นโดยขั้นตอนการสร้างกราฟ
Rob

5
คำแนะนำของ Rob ในการใช้ # N / A มีผลแตกต่างจากเซลล์ว่าง # N / A จะส่งผลให้รูทีนการกราฟ interpolating เหนือเซลล์ในขณะที่เซลล์ว่างเปล่าอย่างแท้จริงจะถือว่าเป็นช่องว่างในบรรทัด หากคุณต้องการช่องว่างในบรรทัดแทนที่จะเป็นช่องว่างภายในคุณต้องให้เซลล์ว่างเปล่าและไม่ใช่ # N / A ตามคำถาม มีวิธีแก้ไขปัญหาด้านล่างซึ่งทำสิ่งนี้ตามที่ขอ
Mr Purple

คำตอบ:


50

คุณจะต้องใช้VBAแล้ว คุณจะวนซ้ำเซลล์ในช่วงทดสอบสภาพและลบเนื้อหาถ้าตรง

สิ่งที่ต้องการ:

For Each cell in SomeRange
  If (cell.value = SomeTest) Then cell.ClearContents
Next

6
ฉันจะเพิ่มไปนี้: หากคุณมีช่วงของเซลล์เฉพาะที่คุณต้องการลบเซลล์ว่างสำหรับคุณสามารถตั้งชื่อช่วงนั้นจากนั้นปรับเปลี่ยนสูตร Boofus โดยการเปลี่ยน SomeRange เป็น Range ("MyRange") หากต้องการตั้งชื่อให้กับเซลล์ของคุณให้เลือกเซลล์คลิกกำหนดชื่อบนแท็บสูตรของริบบิ้นและป้อน "MyRange" ในฟิลด์ชื่อ (และแน่นอนคุณสามารถแทนที่ MyRange ด้วยสิ่งที่คุณต้องการ)
devuxer

31
มันเข้มข้นที่ไม่มีค่าคงที่ว่างใน Excel
ted.strauss

5
หากคุณใส่แมโครลงในฟังก์ชันแผ่นงาน _calculate () มันจะทำให้เซลล์ว่างเปล่าโดยอัตโนมัติ สำหรับรายละเอียดเฉพาะคุณสามารถดูคำตอบของฉันด้านล่าง
Mr Purple

3
@ ted.strauss มีVbNullString
brettdj

5
@brettdj นั่นคือ VBA ไม่ใช่ Excel เราได้ชักชวนไปนานและยากสำหรับฟังก์ชั่นบางอย่างเช่น NULL () หรือ BLANK () เพื่อประโยชน์ใด ๆ
Jon Peltier

75

Excel ไม่มีวิธีการทำเช่นนี้

ผลลัพธ์ของสูตรในเซลล์ใน Excel ต้องเป็นตัวเลขข้อความตรรกะ (บูลีน) หรือข้อผิดพลาด ไม่มีประเภทค่าเซลล์สูตรเป็น "ว่าง" หรือ "ว่าง"

วิธีปฏิบัติหนึ่งที่ฉันได้เห็นตามมาคือการใช้ NA () และ ISNA () แต่นั่นอาจจะใช่หรืออาจจะไม่สามารถแก้ปัญหาของคุณได้เนื่องจากมีความแตกต่างใหญ่ ๆ ในวิธีที่ NA () ปฏิบัติต่อโดยหน้าที่อื่น ๆ (SUM (NA) )) คือ # N / A ในขณะที่ SUM (A1) เป็น 0 ถ้า A1 ว่างเปล่า)


19
วิธี NA () ใช้งานได้ 100% สำหรับกราฟที่ตั้งค่าให้แสดงเซลล์ว่างเป็นช่องว่างซึ่งอาจจะไม่เหมาะกับกรณีของคุณเมื่อคุณส่งออกไปยังแอปพลิเคชันที่ต้องการให้เซลล์ว่างเปล่าเนื่องจากมีสูตร ...
Cobusve

4
ไม่มีทางออกที่สมบูรณ์แบบ NA () เป็นตัวเลือกที่ดีอย่างหนึ่ง อีกอย่างคือสตริงว่างของ (ขึ้นอยู่กับ) '' หรือ ""
Jason

การทำงานนี้มีวัตถุประสงค์เพื่อคืนเซลล์ว่างในข้อมูลที่จะลงจุดเพื่อให้คุณสามารถใช้ตัวเลือกในการละเว้นเซลล์ว่างเป็นช่องว่างในกราฟได้อย่างมีประสิทธิภาพ ในกรณีของฉันฉันพยายามพล็อต 12 ค่าเพื่อแสดงถึงความก้าวหน้ารายเดือน แต่จนถึงเดือนก่อนหน้าด้วยสูตรดังนี้: = IF (MONTH (TODAY ())> C2; $ C $ 11 + C7; NA ( ))
EKI

สิ่งนี้ใช้ได้สำหรับฉัน ฉันมีแผนภูมิที่มีข้อมูลที่ฉันเพิ่มไปทุกวัน - แผนภูมิเบิร์นดาวน์สำหรับการต่อสู้และฉันต้องการเห็นบรรทัดนั้นขยายเป็นวันปัจจุบันเท่านั้น สิ่งนี้ช่วยให้ฉันทำได้โดยใช้ NA () ในคำสั่ง IF ขอบคุณ!
theJerm

12
NA () จะไม่ส่งผลให้เกิดช่องว่าง ทุกคนเข้าใจผิด Excel จะไม่พล็อตมาร์กเกอร์ถ้าค่าเป็น NA () หรือ # N / A แต่จะวาดเส้นที่สอดแทรกระหว่างค่าที่ไม่ใช่ # N / A ที่อยู่ติดกัน
Jon Peltier

38

ใช่มันเป็นไปได้

เป็นไปได้ที่จะมีสูตรทำลายล้างซึ่งประเมินค่าเป็น Trueblank หากตรงตามเงื่อนไข มันผ่านการทดสอบISBLANKสูตร

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

สิ่งที่คุณต้องทำก็คือตั้งค่าช่วงที่มีชื่อพูดGetTrueBlankแล้วคุณจะสามารถใช้รูปแบบต่อไปนี้เหมือนในคำถามของคุณ:

=IF(A1 = "Hello world", GetTrueBlank, A1)

ขั้นตอนที่ 1.ใส่รหัสนี้ในโมดูลของ VBA

Function Delete_UDF(rng)
    ThisWorkbook.Application.Volatile
    rng.Value = ""
End Function

ขั้นตอนที่ 2ในSheet1ในA1เซลล์เพิ่มช่วงที่มีชื่อGetTrueBlankสูตรการคำนวณดังนี้:

=EVALUATE("Delete_UDF("&CELL("address",Sheet1!A1)&")")

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

แค่นั้นแหละ. ไม่มีขั้นตอนเพิ่มเติม เพียงแค่ใช้สูตรทำลายล้างตนเอง ใส่ในเซลล์พูดB2สูตรต่อไปนี้:

=IF(A2=0,GetTrueBlank,A2)

สูตรดังกล่าวข้างต้นB2จะมีการประเมินเพื่อ trueblank ถ้าคุณพิมพ์ A20

คุณสามารถดาวน์โหลดไฟล์การสาธิตที่นี่

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

คุณสามารถแก้ไขสูตรเพื่อส่งคืนผลลัพธ์ในเซลล์ที่อยู่ติดกันเพื่อที่สูตรจะไม่ฆ่าตัวเอง ดูวิธีการที่จะได้รับผล UDF ในเซลล์ที่อยู่ติดกัน

ฉันเจอตัวอย่างของการได้รับ Trueblank เป็นผลลัพธ์ของสูตรที่เปิดเผยโดย The FrankensTeam ที่นี่: https://sites.google.com/site/e90e50/excel-formula-to-change-the-value-of-another- เซลล์


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

ก่อนที่คุณจะพยายามใช้วิธีแก้ปัญหาที่หวานโปรดทราบว่ามันอาจย้อนกลับมา
GSerg

@ GSerg คุณเพียงแค่บอกว่าคุณสามารถวนซ้ำกับ VBA ที่จะไปไม่สิ้นสุดและด้วยวิธีนี้โปรแกรมจะหยุดทำงานหรือไม่ VBA อาจเป็นมีดโกนในมือของลิง และมีข่าวลือว่าสิงโตก็ยิงกลับซึ่งน่าจะทำให้ตกใจมากกว่านี้ :-)
Przemyslaw Remin Remin

@PrzemyslawRemin ไม่ฉันพูดสิ่งที่สุ่มต่าง ๆ ที่อาจเกิดขึ้นรวมทั้งcrashing Excel
GSerg

20

บางทีนี่อาจจะเป็นการโกง แต่มันได้ผล!

ฉันต้องการตารางที่เป็นแหล่งของกราฟและฉันไม่ต้องการให้เซลล์ว่างหรือศูนย์ใด ๆ สร้างจุดบนกราฟ เป็นความจริงที่คุณต้องตั้งค่าคุณสมบัติกราฟเลือกข้อมูลซ่อนและเซลล์ว่างเป็น "แสดงเซลล์ว่างเป็นช่องว่าง" (คลิกปุ่มตัวเลือก) นั่นเป็นขั้นตอนแรก

จากนั้นในเซลล์ที่อาจลงท้ายด้วยผลลัพธ์ที่คุณไม่ต้องการลงจุดให้วางสูตรในคำสั่ง IF พร้อมNA()ผลลัพธ์เช่น=IF($A8>TODAY(),NA(), *formula to be plotted*)

นี่จะให้กราฟที่ต้องการโดยไม่มีจุดเมื่อค่าเซลล์ไม่ถูกต้องเกิดขึ้น แน่นอนว่าสิ่งนี้จะทำให้เซลล์ทั้งหมดมีค่าที่ไม่ถูกต้องในการอ่าน#N/Aและมันยุ่งเหยิง

หากต้องการล้างข้อมูลให้เลือกเซลล์ที่อาจมีค่าที่ไม่ถูกต้องจากนั้นเลือกการจัดรูปแบบตามเงื่อนไข - กฎใหม่ เลือก 'จัดรูปแบบเฉพาะเซลล์ที่มี' และภายใต้คำอธิบายกฎเลือก 'ข้อผิดพลาด' จากช่องรายการแบบเลื่อนลง จากนั้นภายใต้รูปแบบให้เลือกแบบอักษร - สี - ขาว (หรือสีพื้นหลังของคุณเกิดขึ้นได้) คลิกปุ่มต่างๆเพื่อออกไปและคุณจะเห็นว่าเซลล์ที่มีข้อมูลที่ไม่ถูกต้องดูว่างเปล่า (จริง ๆ แล้วมี#N/Aแต่ข้อความสีขาวบนพื้นหลังสีขาวดูว่างเปล่า) จากนั้นกราฟที่เชื่อมโยงก็ไม่แสดงจุดค่าที่ไม่ถูกต้อง


6
NO !!! "แสดงเซลล์ว่างเป็นช่องว่าง" ต้องการให้เซลล์ว่างเปล่า หากพวกเขามี # N / A แทนที่จะไม่มีอะไรรูทีนการสร้างกราฟจะแทรกเข้าไปในเซลล์ # N / A แทนที่จะปล่อยให้พวกมันเป็นช่องว่างในบรรทัด หากคุณต้องการให้เซลล์ # N / A ทำการแก้ไขได้ แต่ในกรณีนี้ "แสดงเซลล์ว่างเป็นช่องว่าง" ไม่ได้ใช้
Mr Purple

4
@GreenAsJade นี่ไม่ใช่คำตอบที่แท้จริงเพราะมันไม่เหมาะกับความต้องการของ OP ควรมีคำถามแยกต่างหากสำหรับปัญหาการสร้างกราฟ
ZX9

10

นี่คือวิธีที่ฉันทำกับชุดข้อมูลที่ฉันใช้ ดูเหมือนว่าซับซ้อนและโง่เง่า แต่เป็นทางเลือกเดียวในการเรียนรู้วิธีใช้โซลูชัน VB ที่กล่าวถึงข้างต้น

  1. ฉันทำ "คัดลอก" ของข้อมูลทั้งหมดและวางข้อมูลเป็น "ค่า"
  2. จากนั้นฉันไฮไลต์ข้อมูลที่วางแล้วและได้ "แทนที่" ( Ctrl- H) เซลล์ว่างด้วยตัวอักษรบางตัวฉันเลือกqเพราะมันไม่ได้อยู่ที่ใดในแผ่นข้อมูลของฉัน
  3. ในที่สุดฉันก็ทำอีก "แทนที่" และแทนที่qด้วยอะไร

กระบวนการสามขั้นตอนนี้เปลี่ยนเซลล์ "ว่าง" ทั้งหมดไปเป็นเซลล์ "ว่าง" ฉันพยายามผสานขั้นตอนที่ 2 และ 3 โดยเพียงแค่แทนที่เซลล์ว่างด้วยเซลล์ว่างเปล่า แต่นั่นก็ไม่ได้ผลฉันต้องแทนที่ เซลล์ว่างด้วยข้อความจริงบางประเภทจากนั้นแทนที่ข้อความนั้นด้วยเซลล์ว่าง


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

4
นี่เป็นสิ่งที่ดีที่สุดสำหรับฉันเพราะฉันไม่ต้องการให้เป็นอัตโนมัติ แต่ฉันต้องการให้เร็ว โดยพื้นฐานแล้วมันหมายความว่า Excel เคารพค่าว่างที่เพิ่มผ่านการค้นหาและแทนที่ซึ่งดีพอสำหรับฉัน!
rickcnagy

10

หากเป้าหมายจะสามารถแสดงเซลล์ว่างเปล่าเมื่อจริง ๆ แล้วมีค่าเป็นศูนย์ดังนั้นแทนที่จะใช้สูตรที่ให้ผลลัพธ์เป็นเซลล์ว่างหรือเปล่า (เนื่องจากไม่มีempty()ฟังก์ชัน) แทน

  • เมื่อคุณต้องการเซลล์ว่างให้ส่งคืนเซลล์0แทน""และจากนั้น

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

    0;0;"";"text"@
    

4
แม้ว่าสิ่งนี้จะไม่ทำให้เซลล์ว่างเปล่า (ไม่มีวิธีใดที่สูตรจะส่งผลให้เกิดเซลล์ว่าง) แต่มันจะทำให้เซลล์ว่างเปล่าหากตัวเลขเป็นศูนย์ อย่างไรก็ตามมันไม่ถูกต้อง ควรเป็น 0; -0; "" (สังเกตเครื่องหมายลบ) หรือแม้แต่ 0; -0; ไม่มีคำพูดใด ๆ เลย ไม่จำเป็นต้องใช้เครื่องหมายอัฒภาคตัวที่สามและส่วน "text" @ ความหมายของเขตข้อมูลที่คั่นด้วยเครื่องหมายอัฒภาคคือ: วิธีการแสดงจำนวนบวกจำนวนลบศูนย์และข้อความ (รูปแบบหลังต้องมี @) office.microsoft.com/en-gb/excel-help/…
cvoinescu

คุณคือพระเจ้าครับ คุณช่วยฉันจาก visual Basic คุณปกครอง
CommaToast

7

LENลองประเมินมือถือใช้ ถ้ามันมีสูตรที่จะกลับมาLEN หากมีข้อความว่ามันจะกลับมายิ่งใหญ่กว่า00


แม้ว่าสิ่งนี้จะไม่ได้ช่วยผู้ถามเดิม แต่จริงๆแล้วนี่ไม่ใช่คำตอบที่ไม่ดีในหลาย ๆ กรณี มันทำงานได้ดีสำหรับกรณีที่คุณถูกบังคับให้ส่งคืน ""
Technium

คำตอบที่ดี แต่ค่อนข้างสับสน เซลล์ที่ฉันต้องการทดสอบส่งคืนตัวเลขหรือ""หรือว่างเปล่า LEN(cell)>0ผลตอบแทนจริงถ้ามีตัวเลข (รวมถึงศูนย์และรวมถึงถ้าคำนวณโดยตัวเลขสูตร) ​​และเท็จถ้าสตริงที่ว่างเปล่าหรือว่างเปล่า
Chris

7

ว้าวผู้คนจำนวนมากอ่านคำถามผิด มันง่ายที่จะทำให้เซลล์ดูว่างเปล่า ปัญหาคือถ้าคุณต้องการให้เซลล์ว่างเปล่าสูตร Excel จะไม่สามารถส่งคืน "ไม่มีค่า" แต่สามารถคืนค่าได้เท่านั้น การคืนค่าศูนย์ช่องว่างหรือแม้แต่ "" คือค่า

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


1
ใช่นั่นคือสิ่งที่ฉันทำ ฉันใช้ฟังก์ชั่นในการสร้าง "#EMPTY" จากนั้นเปิดรหัสบางส่วนในรูทีนย่อยเหตุการณ์ "คำนวณเวิร์กชีท" ตรวจสอบคำตอบของฉันสำหรับคำตอบทั้งหมด
Mr Purple

7

ใช้COUNTBLANK(B1)>0แทนคำชี้แจงISBLANK(B1)ของคุณIF

ซึ่งแตกต่างจากISBLANK(), COUNTBLANK()พิจารณา""เป็นที่ว่างเปล่าและผลตอบแทนที่ 1


น่าเสียดายที่ Excel ปฏิเสธ = COUNTBLANK (IFNA (VLOOKUP (... ), "")) ว่าไม่ถูกต้อง (!)
NetMage

6

คำตอบมากมายที่ส่งคืนค่าที่ดูว่างเปล่า แต่จริง ๆ แล้วไม่ใช่ค่าว่างตามที่ร้องขอ ...

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

เปิด "โปรแกรมดูภาพพื้นฐาน" (Alt + F11) ค้นหาสมุดงานที่น่าสนใจในโครงการสำรวจแล้วดับเบิลคลิก (หรือคลิกขวาและเลือกรหัสดู) วิธีนี้จะเปิดหน้าต่าง "รหัสดู" เลือก "สมุดงาน" ในเมนูแบบเลื่อนลง (ทั่วไป) และ "SheetCalculate" ในเมนูแบบเลื่อนลง (ประกาศ)

วางรหัสต่อไปนี้ (ตามคำตอบโดย JT Grimes) ภายในฟังก์ชัน Workbook_SheetCalculate

    For Each cell In Sh.UsedRange.Cells
        If IsError(cell.Value) Then
            If (cell.Value = CVErr(xlErrNA)) Then cell.ClearContents
        End If
    Next

บันทึกไฟล์ของคุณเป็นสมุดงานที่เปิดใช้งานแมโคร

NB: กระบวนการนี้เปรียบเสมือนมีดผ่าตัด มันจะลบเนื้อหาทั้งหมดของเซลล์ใด ๆ ที่ประเมินเป็นข้อผิดพลาด # N / A ดังนั้นโปรดระวัง พวกเขาจะไปและคุณไม่สามารถรับพวกเขากลับมาโดยไม่ต้องใส่สูตรที่เคยมี

NB2: เห็นได้ชัดว่าคุณต้องเปิดใช้งานแมโครเมื่อคุณเปิดไฟล์อื่นมันจะไม่ทำงานและข้อผิดพลาด # N / A จะไม่ถูกลบ


2
หากคุณต้องการให้เป็นแบบอัตโนมัติ / แฮนด์ฟรี / แบบไดนามิกและคุณไม่ต้องการป้อนสูตรอีกครั้งเพื่อสร้างข้อผิดพลาด #NA คุณสามารถเขียนรหัสแมโครเพื่อทำซ้ำแผ่นงานที่มีปัญหาโดยปล่อยเซลล์ว่างแทนที่ #NA จากนั้นสร้างกราฟ จากแผ่นงานที่ซ้ำกัน (ฉันจะเพิ่มรหัสหากความคิดเห็นนี้ถูกอัปเดตตลอดไป)
Mr Purple

4

คำตอบนี้ไม่ได้จัดการอย่างเต็มที่กับ OP แต่มีหลายครั้งที่ฉันมีปัญหาที่คล้ายกันและค้นหาคำตอบ

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

Sub clearBlanks()
    Dim r As Range
    For Each r In Selection.Cells
        If Len(r.Text) = 0 Then
            r.Clear
        End If
    Next r
End Sub

การทำเช่นนี้จะลบเนื้อหาในเซลล์ใด ๆ ที่กำลังแสดงอยู่""หรือมีเพียงสูตรเท่านั้น


4

สิ่งที่ฉันใช้คือแฮ็คขนาดเล็ก ฉันใช้ T (1) ซึ่งส่งคืนเซลล์ว่าง T เป็นฟังก์ชันใน excel ที่คืนค่าอาร์กิวเมนต์หากสตริงและเซลล์ว่าง ดังนั้นสิ่งที่คุณสามารถทำได้คือ:

=IF(condition,T(1),value)

สร้างสตริงที่มีความยาวเป็นศูนย์ (ISBLANK (CELL) = FALSE)
vinh

วิธีนี้ใช้ได้ผลและควรเป็นคำตอบที่ยอมรับได้ ขอบคุณมากอาเหม็ด กรณีการใช้งานของฉันแตกต่างกันเล็กน้อย ฉันต้องการปล่อยให้เซลล์ว่างเปล่าเพื่อให้ฟังก์ชันการรวมเช่น AVERAGE (), MIN (), MAX (), STDEV (), COUNT () และ MEDIAN () จะไม่สนใจค่า
Charlie Reitzel

2

ฉันใช้งานต่อไปนี้เพื่อทำให้ excel ของฉันดูสะอาดตา:

เมื่อคุณทำการคำนวณใด ๆ "" จะให้ข้อผิดพลาดแก่คุณดังนั้นคุณจึงต้องการให้มันเป็นตัวเลขดังนั้นฉันจึงใช้คำสั่งซ้อนกันเพื่อคืนค่า 0 istead ของ "" แล้วถ้าผลลัพธ์เป็น 0 สมการนี้จะกลับมา ""

=IF((IF(A5="",0,A5)+IF(B5="",0,B5)) = 0, "",(IF(A5="",0,A5)+IF(B5="",0,B5)))

วิธีนี้แผ่น excel จะดูสะอาด ...


1
นี่ไม่ใช่วิธีแก้ปัญหา แผ่นงานดูสะอาด แต่ค่า "" ไม่ "ว่าง" เท่าที่เกี่ยวข้องกับกราฟ
GreenAsJade

1

หากคุณกำลังใช้ฟังก์ชันการค้นหาเช่น HLOOKUP และ VLOOKUP เพื่อนำข้อมูลไปไว้ในแผ่นงานของคุณให้วางฟังก์ชันไว้ในวงเล็บและฟังก์ชันจะส่งคืนเซลล์ว่างแทนที่จะเป็น {0} ตัวอย่างเช่น,

สิ่งนี้จะคืนค่าศูนย์ถ้าเซลล์การค้นหาว่างเปล่า:

    =HLOOKUP("Lookup Value",Array,ROW,FALSE)

สิ่งนี้จะส่งคืนเซลล์ว่างถ้าเซลล์การค้นหาว่างเปล่า:

    =(HLOOKUP("Lookup Value",Array,ROW,FALSE))

ฉันไม่รู้ว่ามันใช้งานได้กับฟังก์ชั่นอื่น ๆ ... ฉันยังไม่ได้ลอง ฉันใช้ Excel 2007 เพื่อให้ได้สิ่งนี้

แก้ไข

หากต้องการรับ IF (A1 = "",,) เพื่อกลับมาจริงต้องมีการค้นหาสองครั้งในเซลล์เดียวกันคั่นด้วย & วิธีง่ายๆในการทำเช่นนี้คือการทำให้การค้นหาครั้งที่สองเป็นเซลล์ที่อยู่ท้ายแถวและจะว่างเปล่าเสมอ


1

จนถึงตอนนี้มันเป็นสิ่งที่ดีที่สุดที่ฉันจะได้รับ

มันใช้ISBLANKฟังก์ชั่นเพื่อตรวจสอบว่าเซลล์ว่างเปล่าอย่างแท้จริงในIFคำสั่ง หากมีสิ่งใดในเซลล์A1ในตัวอย่างนี้แม้แต่อักขระเว้นวรรคเซลล์นั้นจะไม่EMPTYและการคำนวณจะส่งผล วิธีนี้จะทำให้ข้อผิดพลาดในการคำนวณไม่แสดงจนกว่าคุณจะมีหมายเลขที่จะใช้งานได้

หากเซลล์EMPTYนั้นเซลล์การคำนวณจะไม่แสดงข้อผิดพลาดจากการคำนวณหากเซลล์NOT EMPTYนั้นผลลัพธ์การคำนวณจะปรากฏขึ้น นี้จะโยนความผิดพลาดถ้าข้อมูลของคุณไม่ดีหวั่น#DIV/0!

=IF(ISBLANK(A1)," ",STDEV(B5:B14))

เปลี่ยนการอ้างอิงเซลล์และสูตรตามที่คุณต้องการ


1
ปัญหานี้คือคุณต้องเผยแพร่การตรวจสอบนี้ไปยังเซลล์อื่น ๆ ที่ใช้ผลลัพธ์นี้
guthrie

0

คำตอบคือในเชิงบวก - คุณไม่สามารถใช้ฟังก์ชัน = IF () และปล่อยให้เซลล์ว่างเปล่า "Looks empty" ไม่เหมือนกับที่ว่างเปล่า มันเป็นเครื่องหมายอัญประกาศที่น่าละอายสองเครื่องหมายย้อนหลังไม่ให้เซลล์ว่างโดยไม่ต้องเช็ดสูตร


หากคุณพร้อมที่จะใช้ VBA คุณสามารถทำได้ ตามคำตอบอื่น ๆ
Mr Purple

-1

Google นำฉันมาที่นี่พร้อมกับปัญหาที่คล้ายกันมากในที่สุดฉันก็พบทางออกที่ตรงกับความต้องการของฉันมันอาจช่วยคนอื่นด้วย ...

ฉันใช้สูตรนี้:

=IFERROR(MID(Q2, FIND("{",Q2), FIND("}",Q2) - FIND("{",Q2) + 1), "")
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.