Membuat Kode Unik Otomatis

  1. 6 tahun lalu
    Di sunting 6 tahun lalu oleh rukilang

    Permisi gan. Tolong bantuannya ane mau buat kode unik untuk beberapa barang. tapi masalahnya dari barang tersebut ada banyak kategori. Untuk memudahkan si pengguna / karyawan lain, sebaiknya gimana ya gan untuk pembuatan kodenya?
    Kalo yang dari ane itu pake diurutin sesuai dengan jenis, nama, dan tutupnya gan. Mohon bantuannya gan, terkait fungsinya juga.

    Mas @Rukilang ...

    Ini saya lampirkan kembali contoh yang sama namun dengan sedikit modifikasi. Mudah-mudah sesuai dan bisa digunakan...

  2. Minta pengalamanya hehe :)

  3. @rukilang

    ini barangnya barang apa? ada barcodenya kah? kalo ada kenapa gak barcodenya yg diambil sebagai kode barang

  4. @manweljs_ @rukilang

    ini barangnya barang apa? ada barcodenya kah? kalo ada kenapa gak barcodenya yg diambil sebagai kode barang

    Belum ada barcodenya mas. ini barang dagang, baru mau dibuat semacam rakitannya. Untuk dimasukkan ke program yang sedang dibuat

  5. @rukilang

    terlampir contohnya menggunakan VBA untuk membuat nama unik. kalau tidak cocok di edit-edit aja :D

    btw. sy sekalian menambahkan skrip untuk membuat QRCode, hanya saja karena menggunakan sumber dari luar, pastikan dalam keadaan online untuk membuat QRCodenya.

  6. @manweljs_ @rukilang

    terlampir contohnya menggunakan VBA untuk membuat nama unik. kalau tidak cocok di edit-edit aja :D

    btw. sy sekalian menambahkan skrip untuk membuat QRCode, hanya saja karena menggunakan sumber dari luar, pastikan dalam keadaan online untuk membuat QRCodenya.

    cara atur kodenya gimana ya mas? untuk mudah dibaca, karena ini untuk program kasir juga. Jadi kasirnya hanya menginput kode yang disediakan. Misalkan jadi TPA001

  7. Di sunting 6 tahun lalu oleh manweljs_

    @rukilang

    ...Misalkan jadi TPA001..

    sebenarnya ini masalah selera, kalo @rukilang sukanya pake TPA001 ya pake itu aja ;)
    saya hanya memberikan contoh sesuai judul diskusi. Membuat Kode Unik Otomatis

  8. Caton

    14 Agu 2018 Terverifikasi Indonesia + 20.101 Poin

    Mas @manweljs_ dan mas @rukilang ...

    Ikut menambahkan contoh dengan formula, mungkin saja sesuai ... :)

  9. @Caton Mas @manweljs_ dan mas @rukilang ...

    Ikut menambahkan contoh dengan formula, mungkin saja sesuai ... :)

    Keren sekali pakkk @Caton Tapi saya kurang faham hehe... Insyaallah akan coba untuk dipelajari :D

    Terimakasih pak.. Cocok nih

  10. Caton

    15 Agu 2018 Terverifikasi Jawaban Terpilih Indonesia + 20.101 Poin

    Mas @Rukilang ...

    Ini saya lampirkan kembali contoh yang sama namun dengan sedikit modifikasi. Mudah-mudah sesuai dan bisa digunakan...

  11. Maaf pak, yang di sheet katalog

    =IFERROR(INDEX(db.Katalog.Sumber,SUMPRODUCT(SMALL(((INDEX(db.Katalog.Sumber,0,1)<>"")*ROW(db.Katalog.Sumber))+((INDEX(db.Katalog.Sumber,0,1)="")*10^5),ROW($A1)))-5,2),"")

    db.Katalog.Sumber itu diambil dari mana ya? dan pakai apa buatnya, saya hanya tau tentang table.

  12. Caton

    15 Agu 2018 Terverifikasi Indonesia + 20.101 Poin

    @rukilang Maaf pak, yang di sheet katalog

    =IFERROR(INDEX(db.Katalog.Sumber,SUMPRODUCT(SMALL(((INDEX(db.Katalog.Sumber,0,1)<>"")*ROW(db.Katalog.Sumber))+((INDEX(db.Katalog.Sumber,0,1)="")*10^5),ROW($A1)))-5,2),"")

    db.Katalog.Sumber itu diambil dari mana ya? dan pakai apa buatnya, saya hanya tau tentang table.

    db.Katalog.Sumber merupakan nama range (buka Name Manager denga menekan tombol CONTROL F3, atau pada ribbon Formula › Name Manager).

  13. Oh iya pak, kalo fungsi yang ini bisa tolong dijelaskan sedikit pak?

    ((INDEX(db.Katalog.Sumber,0,1)="")*10^5),ROW($A1)))-5,2),"")

  14. mas @Caton

    pada gambar ini :

    Capture3.PNG

    bisa gak yang ditandai panah itu naik keatas, biar berurut gitu :)

  15. Caton

    15 Agu 2018 Terverifikasi Indonesia + 20.101 Poin

    @rukilang Oh iya pak, kalo fungsi yang ini bisa tolong dijelaskan sedikit pak?

    ((INDEX(db.Katalog.Sumber,0,1)="")*10^5),ROW($A1)))-5,2),"")

    Tujuan dari formula tersebut adalah untuk membentuk sebuah array berupa indeks baris sesuai baris data pada sheet TES 2 yang akan diambil. Selengkapnya:

    SUMPRODUCT(SMALL(((INDEX(db.Katalog.Sumber;0;1)<>"")*ROW(db.Katalog.Sumber))+((INDEX(db.Katalog.Sumber;0;1)="")*10^5);ROW($A1)))-5

    Formula tersebut sebenarnya bisa diselesaikan dengan Array Formula. Hanya saja, karena pada sheet TES 2 sudah ada beberapa Array Formula, jadikan saya gunakan Non Array Formula. Intinya begini:

    [1]. Asumsikan, pada sheet TES 2 sudah terisi data mulai baris ke-6 sampai dengan baris ke-35. Hasil kode yang akan diambil adalah pada range O6:P35. Agar mudah dijadikan acuan, maka saya buatkan nama range db.Katalog.Sumber yang merupakan nama range dinamis (formulanya lihat pada Name Manager). Dengan menggunakan nama range tersebut, pada dasarnya formula sudah mengacu ke range O6:P35 pada sheet TES 2.

    [2]. Dengan adanya tabel data yang sudah ditentukan melalui nama range db.Katalog.Sumber, proses selanjutnya adalah menyusun data dari sheet TES 2 tanpa menampilkan baris data kosong (Empty Cells atau Blank Cells), secara Ascending. Oleh karena saya menetapkan tidak akan menggunakan Array Formula, maka ditentukan yang menjadi kolom acuan untuk memeriksa setiap baris data ada pada kolom pertama dari tabel data pada nama range db.Katalog.Sumber. Jika dinarasikan:

    Untuk setiap baris data pada kolom pertama dari db.Katalog.Sumber yang tidak kosong, maka kembalikan indeks baris data tersebut. Jika baris data pada kolom pertama dari db.Katalog.Sumber kosong, maka kembalikan nilai 10^5 (100000).

    Nilai yang dikembalikan jika baris data kosong pada dasarnya tidak mutlak 100000. Berapapun bisa, syaratnya, nilai tersebut harus lebih besar dari baris terakhir dari range data. Jika range data adalah O6:P35, maka berarti nilai tersebut harus berada di atas 35. Namun karena sifat tabel data dari nama range db.Katalog.Sumber adalah dinamis, sebaiknya gunakan saja nilai yang cukup besar. Bisa saja kalau memang mau dibuatkan formula. Namun jauh lebih simple dengan menggunakan notasi 10^5 ... :)

    [3]. Untuk setiap baris data pada kolom pertama dari db.Katalog.Sumber yang tidak kosong, formulanya adalah:

    = ((INDEX(db.Katalog.Sumber;0;1)<>"")*ROW(db.Katalog.Sumber))
    
    3.1. INDEX(db.Katalog.Sumber;0;1)
    menghasilkan deret nilai (array) berupa nilai pada kolom O (range O6:O35).
    
    3.2. (INDEX(db.Katalog.Sumber;0;1)<>"")
    menghasilkan deret nilai (array) berupa nilai TRUE atau FALSE sesuai kondisi. Misalkan, jika nilai pada sel O6 kosong, maka hasilnya adalah FALSE sedangkan jika tidak kosong, maka hasilnya adalah TRUE.
    
    3.3. ((INDEX(db.Katalog.Sumber;0;1)<>"")*ROW(db.Katalog.Sumber))
    menghasilkan deret nilai indeks baris data jika nilai hasil dari poin 3.2 adalah TRUE, dan 0 (nol) jika nilai hasil dari poin 3.2 adalah FALSE. Contoh:
    
    = {6;7;8;9;10;11;12;13;14;15;16;17;18;0;20;21;0;23;24;0;26;27;28;29;30;31;32;33;34;35}

    [4]. Untuk setiap baris data pada kolom pertama dari db.Katalog.Sumber yang kosong, formulanya adalah:

    = ((INDEX(db.Katalog.Sumber;0;1)="")*10^5)
    
    4.1. INDEX(db.Katalog.Sumber;0;1)
    menghasilkan deret nilai (array) berupa nilai pada kolom O (range O6:O35).
    
    4.2. (INDEX(db.Katalog.Sumber;0;1)="")
    menghasilkan deret nilai (array) berupa nilai TRUE atau FALSE sesuai kondisi.
    
    4.3. ((INDEX(db.Katalog.Sumber;0;1)<>"")*10^5)[/b] 
    menghasilkan nilai 100000 jika nilai hasil dari poin 4.2 adalah TRUE, dan 0 (nol) jika nilai hasil dari poin 4.2 adalah FALSE. Contohnya:
    
    = {0;0;0;0;0;0;0;0;0;0;0;0;0;100000;0;0;100000;0;0;100000;0;0;0;0;0;0;0;0;0;0}

    [5]. Jika hasil dari poin ke-3 dan ke-4 digabungkan, maka akan terbentuk deret nilai ± seperti berikut:

    ={6;7;8;9;10;11;12;13;14;15;16;17;18;100000;20;21;100000;23;24;100000;26;27;28;29;30;31;32;33;34;35}

    [6]. Untuk mendapatkan indeks baris secara Ascending, maka digunakan fungsi SMALL. Oleh karena sintaks dari fungsi SMALL adalah:

    SMALL(array, k)

    maka hasil formulasi pada poin ke-5 dijadikan parameter Array, sedangkan indeks array ditentukan melalui notasi ROW($A1). Dengan demikian, jika diurai, hasil dari fungsi SMALL untuk baris pertama akan terkalkulasi ± sebagai berikut:

    =SMALL({6;7;8;9;10;11;12;13;14;15;16;17;18;100000;20;21;100000;23;24;100000;26;27;28;29;30;31;32;33;34;35}, ROW($A1))
    =SMALL({6;7;8;9;10;11;12;13;14;15;16;17;18;100000;20;21;100000;23;24;100000;26;27;28;29;30;31;32;33;34;35}, 1)
    = 6

    [7]. Oleh karena fungsi SMALL di atas mengkalkulasi data array, untuk menghindari Array Formula, digunakan fungsi SUMPRODUCT.

    Demikian mas @Rukilang. Semoga tercerahkan.

  16. Caton

    15 Agu 2018 Terverifikasi Indonesia + 20.101 Poin

    @manweljs_ mas @Caton

    pada gambar ini :

    -image-

    bisa gak yang ditandai panah itu naik keatas, biar berurut gitu :)

    Itu khan tergantung susunan data pada sheet TES 2. Klo susunan input pada sheet TES 2 tidak teratur, hasilnya pun akan sama. Kalau mau disusun secara teratur, tinggal Copy dan Paste As Value, baru kemudian disortir ... (^_^)/

    Atau bisa juga pake formula dengan tambahan kolom bantu. Hasilnya bisa terlihat seperti ini:

    Sort List.gif

    Demikian.

  17. pak @Caton boleh minta file yg itu hehe mau tau juga cara nyortir seperti itu

  18. @Caton bisa juga pake formula dengan tambahan kolom bantu

    oh ternyata bisa ;)

  19. @manweljs_ oh ternyata bisa ;)

    pak @manweljs_ nanya dong pak, belajar excel biar advanced dimana ya? kalo nyari2 di youtube, ga ada kurikulumnya pak :D hehe

  20. Di sunting 6 tahun lalu oleh manweljs_

    @rukilang .. nanya dong pak, belajar excel biar advanced dimana ya?

    saya juga belajar gak pake kurikulum, hanya coba-coba kasus di forum ini. awalnya pusing lihat formula panjang2, lama-lama akhirnya paham sendiri. saat gabung di forum ini saya bahkan gak tau apa itu Range, gak tau ada fungsi TRIM, SUMPRODUCT, TRUNC, MID, MOD, dll...

    namun karena saya pengen belajar akhirnya sy download deh file2 contoh di forum ini yang saya anggap menarik dan coba2 mengerjakkannya dengan cara sendiri. kalau gak tau nyari2 di internet atau di forum ini referensi yang kira2 cocok kemudian di kembangkan sendiri.

    saran saja, kalau memang @rukilang pengen belajar, cobalah sempatkan waktu berpartisipasi pada diskusi2 di forum ini, jangan takut atau ragu hasilnya salah atau tidak sesuai. pasti dalam beberapa bulan @rukilang paling tidak sudah MID ADVANCED

    demikian cara saya belajar

 

atau Mendaftar untuk ikut berdiskusi!