ฉันจะให้สูตรการจัดรูปแบบตามเงื่อนไขและช่วงเปลี่ยนจากโดยอัตโนมัติได้อย่างไร


24

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

เพื่อหลีกเลี่ยงปัญหานี้ฉันพยายามเขียนกฎที่ใช้กับสเปรดชีตทั้งหมดและคีย์ส่วนหัวคอลัมน์เพื่อเน้นข้อมูลที่ฉันต้องการตรวจสอบ

ตัวอย่าง: =AND(A$1="Check This Column For Blanks),ISBLANK(A1))นำไปใช้กับ=$1:$1048576

อย่างไรก็ตามแม้จะมีกฎที่ใช้กับแผ่นงานทั้งหมดอย่างชัดเจนแต่ก็ยังคงปรับอัตโนมัติ (และแตกหักด้วยวิธีแปลก ๆ โดยทำเช่นนั้น) ในขณะที่ฉันทำงานในแผ่นงาน

ฉันจะหลีกเลี่ยงสิ่งนี้ได้อย่างไร


บางทีคุณอาจใช้สเปรดชีตทั้งหมดไม่ได้ ... คุณช่วยยกตัวอย่างที่ชัดเจนเกี่ยวกับสิ่งที่คุณกำลังทำอยู่ได้หรือไม่?
Doktoro Reichard

บางทีคุณอาจมีสกรีนช็อตและระบุว่าพื้นที่ใดเสียหาย
Jerry

@JohnBensin ฟังดูเหมือนว่าเป็นสิ่งที่ฉันกำลังมองหา ฉันจะพยายามจำไว้ครั้งต่อไป
Iszi

@Iszi ฉันเพิ่มมันเป็นคำตอบ ฉันแน่ใจว่าคุณรู้วิธีเพิ่มช่วงที่ตั้งชื่อ แต่ฉันรวมรายละเอียดไว้ในคำตอบสำหรับผู้เข้าชมในอนาคต (และเมื่อฉันเรียนรู้การใช้ Excel ครั้งแรกฉันจำไม่ได้)
John Bensin

บทความเกี่ยวกับสิ่งที่ผิดพลาด: Excel 2010 การจัดรูปแบบตามเงื่อนไขฝันร้าย พวกเขาแน่ใจว่าทำให้มันแย่ลงมากในขณะที่พยายามทำให้ดีขึ้นเล็กน้อย ...
RomanSt

คำตอบ:


7

เมื่อฉันต้องการช่วงที่ไม่ควรเปลี่ยนแปลงภายใต้สถานการณ์ใด ๆรวมถึงการย้ายการแทรกและการลบเซลล์ฉันใช้ช่วงที่มีชื่อและINDIRECTฟังก์ชัน

ตัวอย่างเช่นถ้าฉันต้องการให้ช่วงใช้กับเซลล์เสมอA1:A50ฉันกำหนดช่วงที่มีชื่อผ่านตัวจัดการชื่อ:

เพิ่มช่วงที่มีชื่อ

ในการจัดการชื่อเพิ่มช่วงใหม่ (คลิกใหม่) และในหมายถึง: ใช้ฟังก์ชันทางอ้อมที่จะระบุช่วงของเซลล์ที่คุณต้องการเช่นหรือ=INDIRECT("A1:A50") =INDIRECT("Sheet!A1:A50")เนื่องจากช่วงนี้เป็นเพียงข้อโต้แย้งทางเทคนิคจำนวนเซลล์ที่ไม่มีการจัดเรียงใหม่จะทำให้ Excel อัปเดต

นอกจากนี้ยังใช้งานได้อย่างน้อย Excel 2010 และ Excel 2013 ถึงแม้ว่าภาพหน้าจอของฉันมาจาก 2013 แต่ฉันได้ใช้เทคนิคนี้ในปี 2010 มาแล้ว

คำเตือน

  1. โปรดทราบว่าค่าคงที่นี้ยังสามารถเดินทางไปกับคุณได้ ตัวอย่างเช่นถ้าคุณเปลี่ยนชื่อของแผ่นช่วงที่มีชื่อจะแตก

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


แม้ว่าช่วงที่ตั้งชื่อจะให้วิธีสั้น ๆ ที่สะดวกในการอ้างอิงถึงเซลล์เป้าหมาย แต่คุณไม่สามารถใช้INDIRECTฟังก์ชั่นด้วยตัวเองได้หรือไม่?
Iszi

@ Iszi ใช่ฉันเชื่ออย่างนั้น อย่างไรก็ตามอย่างที่คุณบอกว่าช่วงที่ตั้งชื่อนั้นสะดวกสบายและฉันมักพบว่าตัวเองพูดถึงช่วงของเซลล์เดียวกันในหลาย ๆ แห่งทั่วทั้งเวิร์กบุ๊ก ฉันพยายามรักษาช่วงให้เล็กที่สุดเท่าที่จะเป็นไปได้ด้วยเหตุผลด้านประสิทธิภาพและเปลี่ยนเฉพาะเมื่อจำเป็นเท่านั้นดังนั้นการใช้ช่วงที่มีชื่อหมายความว่าฉันจะต้องเปลี่ยนเฉพาะในที่เดียวเท่านั้น
John Bensin

@Iszi คุณใช้วิธีนี้ได้หรือไม่? หากคุณพบกับข้อผิดพลาดหรือข้อบกพร่องใด ๆ ที่ฉันไม่ได้กล่าวถึงให้ฉันรู้หรือแก้ไขพวกเขาเป็นคำตอบ ฉันใช้กลยุทธ์นี้ในสถานที่เพียงพอที่ฉันไม่ต้องการให้บางสิ่งกลับมาหลอกหลอนคุณหรือตามถนน
John Bensin

ฉันยังไม่ได้นำไปใช้ แต่อาจจะทำในครั้งต่อไปที่ฉันพบปัญหานี้ ฉันจะแจ้งให้คุณทราบหากมีปัญหาใด ๆ
Iszi

9
ฉันพยายามใช้ช่วงที่ตั้งชื่อไว้ในคอลัมน์ "ใช้กับ" ของตัวจัดการกฎการจัดรูปแบบตามเงื่อนไข แต่ช่วงที่ตั้งชื่อจะขยายเมื่อฉันกด "ตกลง" หรือ "นำไปใช้" ฉันทำผิดหรือเปล่า?
Mihai Alexandru Bîrsan

2

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

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

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

มันเป็นความยุ่งยากอย่างมากสำหรับฉันเช่นกัน

ฉันหวังว่านี่จะช่วยได้.


1

ฉันไม่ได้ดังนั้นให้แน่ใจและฉันต้องเผชิญกับปัญหาเดียวกันบ่อย

ฉันจะบอกว่าฟิลด์ 'นำไปใช้กับ' ในแผงการจัดรูปแบบตามเงื่อนไข (CF) จะทำงานได้ตลอดเวลาแบบไดนามิก ดังนั้นจึงมักจะแปลงอ้างอิงใด ๆ =$A$1:$A$50รูปแบบ

มันเป็นความเจ็บปวด


มันไม่ได้แม้ว่าฉันจะใช้การประกาศอย่างชัดเจนหรือตัวแปร ($ หรือ no $)
Paul

1

ฉันพบว่าการใช้INDIRECTฟังก์ชั่นและROWฟังก์ชั่นในกฎการจัดรูปแบบตามเงื่อนไขช่วยขจัดปัญหาของ Excel ในการสร้างกฎใหม่และเปลี่ยนช่วง

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

=MONTH(INDIRECT("C"&ROW()))<>MONTH(INDIRECT("C"&ROW()-1))

โดยที่คอลัมน์ C ในสเปรดชีตของฉันมีวันที่ ฉันไม่ต้องทำอะไรเป็นพิเศษในช่วงนี้ (ไม่จำเป็นต้องกำหนดชื่อช่วงเป็นต้น)

ดังนั้นในตัวอย่างโปสเตอร์ดั้งเดิมแทนที่จะเป็น "A1" หรือ "A $ 1" ในกฎ CF ให้ใช้:

INDIRECT("A"&ROW())

0

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

1) เมื่อสิ่งบางอย่างจากภายใน "ใช้กับ" ถูกตัด / วางนอกช่วงนี้

2) เมื่อมีเซลล์ที่ผสานภายใน "ใช้กับ" และแถวหรือคอลัมน์ใดก็ได้รับการปรับ

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

ความคิดที่อาจช่วยเราในการแก้ปัญหาในเรื่องนี้

-T


0

ฉันมีทางออกง่าย ๆ สำหรับสิ่งนี้

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


0

ในสูตรการจัดรูปแบบตามเงื่อนไขให้ใช้R1C1สัญกรณ์ที่มีINDIRECTฟังก์ชัน:
ตัวอย่างที่ 1:

If same row column A = 1 ...

=IF($A1=1,1,0) becomes 
=IF(INDIRECT("RC1",FALSE)=1,1,0)

ตัวอย่างที่ 2:
If same row column A = 2 AND next row column A = 3...

=IF(AND(($A1=2),($A2=3)),1,0) becomes
=IF(AND((INDIRECT("RC1",FALSE)=2),(INDIRECT("R[1]C1",FALSE)=3)),1,0)

0

หากกรณีใช้งานคือการสร้างสเปรดชีตรายงานสิ่งนี้น่าจะใช้ได้ดี:


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

สมมติว่าข้อมูลของคุณถูกจัดเรียงตามปกติ (เป็นแถว):

  1. ป้อนข้อมูลทั้งหมดของคุณลงในแผ่นงานเดียว Inputสำหรับการกวดวิชานี้ผมจะตั้งชื่อแผ่น อย่าใช้การจัดรูปแบบตามเงื่อนไขกับมัน อย่าลังเลที่จะเปลี่ยนค่าไปยังเนื้อหาหัวใจของคุณ (เช่นลบ / แทรก / คัดลอก / วาง)
  2. สร้างแผ่นงานเปล่าใหม่และตั้งชื่อตามที่คุณต้องการ (เช่นOutput) คัดลอกการจัดรูปแบบทั่วโลกของคุณด้วยตนเองเช่นความกว้างของคอลัมน์และการจัดรูปแบบส่วนหัว (ไม่ใช่เนื้อหาของส่วนหัวเพียงการจัดรูปแบบ)
  3. แทนที่$A$1ในสูตรต่อไปนี้กับสถานที่ตั้งของจุดเริ่มต้นของแถวส่วนหัวของคุณจากนั้นคัดลอกทั่วทุกคอลัมน์และแถวที่คุณต้องการที่จะส่งออก: =IF(LEN(OFFSET(Input!$A$1,ROW()-1,COLUMN()-1))>0,OFFSET(Input!$A$1,ROW()-1,COLUMN()-1),"") (คนIF(LEN(...)>0,...,"")งบเป็นสิ่งจำเป็นเพราะ Excel ยังเป็นประโยชน์กำหนดชนิดข้อมูลสำหรับคุณและการใช้งาน0สำหรับเซลล์ที่ว่างเปล่าเป็นอย่างอื่นและ-1เงื่อนไขมาจากการชดเชยเมื่อเทียบกับความหมายลำดับ)
  4. ใช้การจัดรูปแบบตามเงื่อนไขกับOutputแผ่นงาน

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

คุณเพียงแค่ขยายช่วงที่สูตรใช้ในOutputแผ่นงานด้วยตนเองเมื่อขนาดของInputข้อมูลของคุณเปลี่ยนแปลง

ฉันขอแนะนำให้คุณหลีกเลี่ยงการรวมเซลล์ใด ๆ


ป.ล. คำถามนี้ถูกถามหลายครั้ง (นอกจากนี้ยังใช้ใน Google ชีตซึ่งเป็นโคลนของ Excel) ดังนั้นคุณอาจพบทางออกที่ดีกว่าสำหรับกรณีการใช้งานของคุณมองผ่าน:

  1. การกระจายตัวของการจัดรูปแบบตามเงื่อนไขของ Excel
  2. (อันนี้) ฉันจะเก็บสูตรและช่วงการจัดรูปแบบตามเงื่อนไขจากการเปลี่ยนแปลงโดยอัตโนมัติได้อย่างไร
  3. รักษาการจัดรูปแบบตามเงื่อนไขในการตัดแปะ
  4. Excel: วิธีการจัดรูปแบบตามเงื่อนไขอย่างถาวรกับสเปรดชีตทั้งหมดหรือไม่
  5. เหตุใด Excel จึงขัดการจัดรูปแบบตามเงื่อนไขของฉัน

0

หากคุณวางโดยไม่มีรูปแบบ ( Paste > Paste Special > Unicode Textหรือคล้ายกัน) การจัดรูปแบบพิเศษจะไม่ถูกคัดลอกและเช่น "ใช้กับ" - ช่วงไม่ควรเปลี่ยนแปลง

คุณสามารถลบแถว / คอลัมน์ได้ แต่หากคุณแทรกพวกเขาจะมีการแบ่ง "นำไปใช้กับ" -

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

อย่างไรก็ตามมันเป็นความเจ็บปวดโดยรวมที่ต้องจำไว้ว่าให้วางโดยไม่มีรูปแบบ ฯลฯ โดยปกติฉันจะไม่ทำ

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

ฉันทดสอบบน Mac โดยใช้ Excel 16.3 (ฉันคิดว่า Office 2016 ... hmm)

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