คุณสามารถเลือก AND
เพื่อเพิ่มเงื่อนไขให้กับฟังก์ชันที่คุณเขียนไว้แล้ว เช่น. ต่อไปนี้จะทดสอบตำแหน่งที่เป็นตัวเลข
=AND(COUNTIF(A1,"??_???-??_???_??-???"),ISNUMBER((LEFT(A1,2)&MID(A1,6,1)&MID(A1,8,2)&RIGHT(A1,3))+0))
หมายเหตุ: นี่เป็นวิธีการขั้นพื้นฐานและอาจต้องมีการปรับแต่งหากคุณมีกรณีที่เกี่ยวข้องกับการใช้ทศนิยม ฯลฯ
แก้ไข: คุณสามารถลองใช้วิธีการด้านล่างเพื่อตรวจสอบข้อความตัวพิมพ์ใหญ่ในตำแหน่งที่ระบุ
=AND(COUNTIF(A1,"??_???-??_???_??-???"),ISNUMBER((LEFT(A1,2)&MID(A1,6,1)&MID(A1,8,2)&RIGHT(A1,3))+0),INDEX(FREQUENCY(-CODE(MID(MID(A1,4,2)&MID(A1,11,3)&MID(A1,15,2),ROW($A$1:$A$7),1)),{-91,-65,0}),2)=7)
แก้ไข 2: กลายเป็นว่ายากกว่าที่ฉันจินตนาการไว้ สูตรต่อไปนี้ใช้งานได้ใน DV สำหรับเซลล์ A1
=AND(COUNTIF(A1,"??_???-??_???_??-???"),ISNUMBER((LEFT(A1,2)&MID(A1,6,1)&MID(A1,8,2)&RIGHT(A1,3))+0),MIN(FLOOR(CODE(MID(MID(A1,4,2)&MID(A1,11,3)&MID(A1,15,2),ROW($A$1:$A$7),1)),65))=65,MAX(CEILING(CODE(MID(MID(A1,4,2)&MID(A1,11,3)&MID(A1,15,2),ROW($A$1:$A$7),1)),90))=90)
แต่เนื่องจากลักษณะพิเศษบางประการ Excel จึงไม่ยอมให้ฉันวางมันลงไป ดังนั้นฉันจึงเขียนโค้ดขนาดเล็กสำหรับสิ่งเดียวกันซึ่งใช้ DV กับเซลล์ A1
และน่าประหลาดใจที่มันยอมรับสูตรยาวเดียวกันนั้นผ่านโค้ด ตรวจสอบให้แน่ใจว่าคุณลบ DV ในเซลล์ก่อนที่จะเรียกใช้โค้ดนี้
With Range("A1")
.Value = "12_AB1-23_ADC_AZ-123"
.Validation.Add xlValidateCustom, , , "=AND(COUNTIF(A1,""??_???-??_???_??-???""),ISNUMBER((LEFT(A1,2)&MID(A1,6,1)&MID(A1,8,2)&RIGHT(A1,3))+0),MIN(FLOOR(CODE(MID(MID(A1,4,2)&MID(A1,11,3)&MID(A1,15,2),ROW($A$1:$A$7),1)),65))=65,MAX(CEILING(CODE(MID(MID(A1,4,2)&MID(A1,11,3)&MID(A1,15,2),ROW($A$1:$A$7),1)),90))=90)"
End With
เมื่อเข้าไปแล้ว คุณสามารถนำมันไปไว้ในเซลล์อื่นได้โดยเพียงแค่ทำ copy >> Paste Special >> Validation
เพื่อความชัดเจนฉันใช้ Excel 2016
person
shrivallabha.redij
schedule
22.03.2020