Saya memiliki daftar nomor file di Kolom A
, kode yang terkait dengan file di kolom B
, dan beberapa hari di kolom I
. Contoh:
File Code Days
12345 AAAA 100
54321 AAAA 91
67890 BBBB 115
09876 CCCC 150
Ada sekitar 100+ baris data. Saya ingin menarik sampel acak nomor file berdasarkan kriteria berikut:
- Setidaknya 20 file atau 20% lebih tinggi.
- Setidaknya 1 file dari masing-masing Kode.
- Semua file yang memiliki Kode tidak dibagi dengan file lain.
- Semua file di mana Days melebihi 150.
Apakah ini mungkin?
CCCC
, dan hanya ada satu file dengan kode itu, maka, menurut definisi, Anda memiliki file itu. (2) Ini mungkin sangat sulit dilakukan dengan rumus (alias fungsi lembar kerja). Apakah solusi VBA dapat diterima?Jawaban:
Kesulitannya adalah bahwa ada banyak cara pengambilan sampel yang dapat dilakukan karena rasio yang tidak diketahui dari hal-hal seperti jumlah file vs jumlah kode unik vs kode dengan satu file vs file> 150 hari vs distribusi jumlah file per kode, dll. Daripada mencoba merancang solusi pasti untuk semua kasus yang mungkin, saya akan menjelaskan proses yang akan membawa Anda ke solusi. Setiap langkah memiliki banyak cara mudah yang dapat Anda lakukan di Excel.
Anggap saja sebagai tiga pot:
Pot 1 Anda akan mengisi dengan sampel yang Anda pilih selama latihan (pot ini akan dalam bentuk daftar yang Anda buat dengan nama file yang dipilih). Kami akan menyebutnya daftar sampel.
Pot 2 berisi kumpulan kode unik (pot ini akan berbentuk daftar kode unik; cari cara mengekstrak nilai unik dari daftar yang berisi duplikat jika Anda tidak tahu caranya). Ini akan berisi kode-kode yang belum diwakili oleh sampel yang dipilih. Kami akan menyebutnya daftar kode.
Pot 3 berisi "token" untuk jumlah sampel yang diperlukan yang tersisa (pot ini hanya akan menjadi nomor dalam sel yang Anda kurangi atau hitung ketika Anda memilih sampel). Kami akan menyebut ini jumlah sampel yang tersisa. Hitung lebih besar dari 20 atau 20% dan masukkan angka itu ke pot ini.
Berikut langkah-langkahnya:
Tentukan batas oversampling untuk digunakan. Target Anda adalah 20% dari file tetapi pengambilan sampel acak tidak akan memberi Anda seragam 20% di semua kode (kecuali Anda menambahkan persyaratan tambahan untuk itu). Beberapa kode akan memiliki kurang dari 20% yang dipilih, beberapa lagi. Aturan non-acak tidak akan memiliki hubungan hingga 20%. Kode dengan satu file akan dijadikan sampel 100%. Aturan> 150 hari dapat memilih lebih dari 20% file untuk kode yang diberikan. Jika Anda memilih jauh di atas 20% oleh aturan ini, kode itu sudah akan lebih terwakili, jadi Anda mungkin tidak ingin mengambil sampel acak lebih banyak dari kode itu. Tentukan persentase pengambilan sampel maksimum (atau jumlah sampel) untuk aturan> 150 hari di mana Anda mengecualikan kode tersebut dari pengambilan sampel acak.
Pilih semua file dengan hari> 150 dan pindahkan ke daftar sampel. Pengurangan sampel yang tersisa dihitung dengan jumlah file-file ini. Hapus kode yang diwakili oleh file-file ini dari daftar kode (berdasarkan kode unik untuk kumpulan file ini).
Jika langkah ini menghasilkan kode apa pun yang melebihi batas pengambilan sampel berlebih, hapus semua file yang terkait dengan kode ini dari daftar sumber. Perhatikan bahwa penghapusan bersifat kiasan. Tujuannya adalah untuk memastikan bahwa tidak ada file-file tersebut yang akan diambil sampelnya nanti. Anda bisa mengkodekannya dengan cara yang tidak mengharuskan Anda menghapus file.
Dari sisa file dan kode dalam daftar kode, pindahkan ke sampel daftar file mana saja yang merupakan satu-satunya file untuk kode itu. Jumlah sampel yang tersisa dihitung berdasarkan jumlah file ini. Hapus kode yang diwakili oleh file-file ini dari daftar kode. Perhatikan bahwa langkah ini tidak sepenuhnya diperlukan tergantung pada bagaimana langkah 5 diterapkan. Saya membagi ini sebagai langkah terpisah untuk kejelasan dan sehingga Anda tidak perlu memilih secara acak dari daftar satu.
Untuk setiap kode yang tersisa dalam daftar kode, pilih satu file secara acak untuk kode itu dan pindahkan ke daftar sampel. Jumlah sampel yang tersisa dihitung berdasarkan jumlah file ini. Hapus kode yang diwakili oleh file-file ini dari daftar kode (menghapus kode bisa opsional, tergantung pada bagaimana Anda menerapkannya; setelah langkah ini selesai, daftar kode tidak diperlukan lagi).
Untuk jumlah file dalam jumlah sampel yang tersisa, pilih file secara acak dari file yang tersisa dan pindahkan ke daftar sampel.
Dan kamu sudah selesai.
Ini di luar ruang lingkup yang dimaksudkan dari pertanyaan di situs ini untuk merancang seluruh aplikasi untuk Anda. Ada banyak cara untuk mendekati setiap langkah dan formula serta metode untuk mencapainya terwakili dengan baik dalam pertanyaan sebelumnya di situs. Jika Anda benar-benar macet, ajukan pertanyaan baru untuk bantuan dengan masalah khusus. Misalnya, "Bagaimana cara saya memilih nilai secara acak dari daftar?" akan menjadi skala pertanyaan yang sesuai.
sumber