Anda dapat memilih AND
untuk menambahkan kondisi ke fungsi yang sudah Anda tulis. misalnya berikut ini akan menguji posisi yang bersifat numerik.
=AND(COUNTIF(A1,"??_???-??_???_??-???"),ISNUMBER((LEFT(A1,2)&MID(A1,6,1)&MID(A1,8,2)&RIGHT(A1,3))+0))
Catatan: Ini adalah pendekatan yang cukup mendasar dan mungkin memerlukan beberapa penyesuaian jika Anda memiliki kasus yang melibatkan penggunaan desimal, dll.
Edit: Anda dapat mencoba pendekatan di bawah ini untuk memeriksa teks huruf besar di posisi tertentu.
=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)
Sunting2: Ini ternyata lebih sulit dari yang saya bayangkan. Rumus berikut berfungsi di DV untuk sel 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)
Namun karena beberapa kekhasan, Excel tidak mengizinkan saya menempelkannya begitu saja. Jadi saya menulis kode kecil untuk hal yang sama yang menerapkan DV ke sel A1
dan yang mengejutkan ia menerima rumus panjang yang sama melalui kode. Pastikan Anda menghapus DV di sel sebelum menjalankan kode ini.
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
Setelah berada di sana, Anda bisa mendapatkannya di sel lain hanya dengan melakukan copy >> Paste Special >> Validation
.
Untuk lebih jelasnya, saya menggunakan Excel 2016.
person
shrivallabha.redij
schedule
22.03.2020