Validasi Data Excel 2010 memungkinkan tata letak tertentu

Saya ingin menerapkan validasi data ke nomor referensi, untuk memaksakan tata letak berikut (idealnya hanya huruf besar):

XX_NNX-XX_NNN_NN-XXX

X = Angka

N = Huruf

Contoh: 12_AB1-23_ABC_AB-123

Rumus khusus berikut mengizinkan semuanya kecuali angka - apakah ada solusi untuk ini?

Saya tidak ingin menggunakan * karena memungkinkan lebih banyak karakter daripada yang saya inginkan.

=COUNTIF(A1,"??_???-??_???_??-???")


person Snottus    schedule 22.03.2020    source sumber


Jawaban (1)


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
comment
Terima kasih atas balasan cepatnya! Ini memecahkan masalah angka, tetapi memungkinkan Huruf diganti dengan angka - Saya mencoba mengutak-atik fungsi ISTEXT, tetapi sejauh ini tidak berhasil. - person Snottus; 22.03.2020
comment
@Snottus Saya telah memposting hasil edit. Silakan uji dan lihat apakah ini membantu tujuan Anda. - person shrivallabha.redij; 23.03.2020
comment
Agak cepat dalam membalas - fungsi yang diedit tidak kompatibel dengan Validasi Data (Serikat, Persimpangan, dan Rentang tidak diizinkan), setidaknya di Excel 2010 - person Snottus; 24.03.2020
comment
@Snottus Anda benar! Ternyata ini lebih sulit dari perkiraan awal saya. Lihat edit 2. Ini diperiksa dan diuji di Excel 2016 dan saya berharap ini berfungsi untuk Anda di Excel 2010! - person shrivallabha.redij; 25.03.2020