การตรวจสอบข้อมูลใน Excel- ค่าทั้งหมดในรายการที่คั่นด้วยจุลภาคภายในช่วงเซลล์


0

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

............ G

LF100009 ....... 400 <- สีแดง

HS100011 .......

RT100012 ....... LF100009

LA100015 ....... LF100009, RT100012

ME100020 ....... HS100011, RT1000012, LA100015 <- สีแดง

KE100050 ....... LA100011, LA100015 <- สีแดง

สกรีน snip ของสมุดงาน


คุณสามารถโพสต์เวิร์กบุคตัวอย่างได้หรือไม่ ตัวอย่างของคุณด้านบนดูเหมือนจะไม่สอดคล้องกับคำถามของคุณ
Chris

ขอโทษฉันไม่เห็นว่าจะเพิ่มไฟล์แนบที่ไหน? @Chris
Laura

เพิ่มสกรีนช็อตของหน้าเวิร์กบุ๊กตัวอย่าง แต่สำหรับเหตุผลด้านการรักษาความลับมันยังคงเป็นข้อมูลที่จัดทำขึ้นเพียงฟอร์แมตตามที่ฉันต้องการในที่ที่ถูกต้องด้วยเหตุผลว่าทำไมบางสิ่งจึงถูกไฮไลต์
ลอร่า

การจัดรูปแบบตามเงื่อนไขหรือการตรวจสอบข้อมูล?
Raystafarian

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

คำตอบ:


1

มันไม่ได้หรูหราอะไร แต่มันจะใช้งานได้ถึง 3 อ้างอิง คุณสามารถรวมกับการจัดรูปแบบตามเงื่อนไขได้ตามต้องการหรือใส่ลงในคอลัมน์ตัวช่วย

=IF(IF(IF(G2="",TRUE,LEN(G2)-LEN(SUBSTITUTE(G2,",",""))+1)=TRUE,1,
IF(IF(G2="",TRUE,LEN(G2)-LEN(SUBSTITUTE(G2,",",""))+1)=1,COUNTIF(A:A,G2),
IF(IF(G2="",TRUE,LEN(G2)-LEN(SUBSTITUTE(G2,",",""))+1)=2,SUMPRODUCT((COUNTIF(A:A,LEFT(G2,FIND(",",G2)-1)))*(COUNTIF(A:A,MID(G2,FIND(",",G2)+2,LEN(G2))))),
IF(IF(G2="",TRUE,LEN(G2)-LEN(SUBSTITUTE(G2,",",""))+1)=3,SUMPRODUCT((COUNTIF(A:A,LEFT(G2,FIND(",",G2)-1)))*(COUNTIF(A:A,MID(G2,FIND(",",G2)+2,LEN(G2)-FIND("@",SUBSTITUTE(G2,",","@",IF(G2="",TRUE,LEN(G2)-LEN(SUBSTITUTE(G2,",",""))+1)-1))-1)))*(COUNTIF(A:A,MID(G2,FIND("@",SUBSTITUTE(G2,",","@",IF(G2="",TRUE,LEN(G2)-LEN(SUBSTITUTE(G2,",",""))+1)-1))+2,LEN(G2))))),
FALSE
))))=1,TRUE)

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

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

0

และนี่คือ UDF ที่ใส่ค่า TRUE / FALSE ในเซลล์ผู้ช่วย สูตรจะมีลักษณะอย่างไร=testReferences(G2,A:A,", ")

โค้ดต่อไปนี้ถูกวางลงในโปรแกรมแก้ไข VBA มันใช้งานได้สำหรับการอ้างอิงไม่ จำกัด

Function testReferences(text As Range, list As Range, delimiter As String)
    Dim arr() As String
    Dim found As Boolean

    If text = "" Then
        found = True
    Else
        arr = Split(text, delimiter)            
        For i = LBound(arr) To UBound(arr)
            If Application.WorksheetFunction.CountIf(list, arr(i)) = 1 Then
                found = True
            Else
                found = False
                Exit For
            End If
        Next
    End If

    testReferences = found
End Function

ฉันบันทึกเป็นไฟล์ excel ที่เปิดใช้งานแมโคร (ไม่เคยมีมาก่อน) และวางไว้ในบรรทัดแรกตามที่คุณแสดง แต่ให้ฉันชื่อ # ใช่หรือไม่ ข้อผิดพลาดสำหรับแต่ละรายการ นี่คือภาพหน้าจอ @Chris link
Laura

คุณใส่รหัสลงในเครื่องมือแก้ไข vba ก่อนบันทึกไฟล์หรือไม่ ลิงค์นี้อาจช่วยได้ - wikihow.com/Create-a-User-Defined-Function-in-Microsoft-Excel
Chris
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.