Saya memiliki 2500 file Excel. Saya perlu menampilkan semua baris yang berisi string tertentu di kolom tertentu. Bagaimana saya bisa melakukan ini? Bagaimana jika string tertentu tidak di kolom tetap, tetapi bisa di kolom mana saja?
microsoft-excel
search
file-search
Bobert
sumber
sumber
Jawaban:
Ini beberapa kode skelet-O. Anda dapat membangun ini atau orang lain di sini bisa. Potongan besar belum ditulis. Mungkin saya akan melakukan lebih banyak ketika saya pulang.
sumber
Dari komentar Anda, saya menganggap Anda belum pernah menulis makro VBA. Makro pertama Anda akan menjadi pendakian yang tidak menanjak tetapi setelah itu masing-masing akan lebih mudah sampai Anda lupa Anda pernah berpikir mereka mungkin sulit untuk ditulis.
Makro di bawah ini mengasumsikan bahwa semua 2.500 buku kerja berada di folder yang sama. Ini biasanya merupakan pendekatan yang paling mudah tetapi mungkin tidak mungkin dalam kasus Anda. Jika tidak memungkinkan, pilih folder dengan banyak buku kerja untuk mencoba makro ini. Anda harus menambahkan penjelasan tentang situasi Anda ke pertanyaan Anda sehingga saya dapat menjelaskan bagaimana makro ini dapat disesuaikan untuk mengatasinya.
Saya telah mencoba untuk menjaga hal-hal yang sederhana walaupun mungkin tidak terlihat seperti itu. Ada cara yang lebih baik dan lebih cepat untuk melakukan hal yang sama tetapi saya pikir ini adalah kompromi yang tepat. Saya telah memasukkan banyak komentar yang menjelaskan apa yang dilakukan kode. Bantuan editor makro akan menjelaskan sintaksisnya. Tetapi tanyakan apakah Anda sedang berjuang.
Buat buku kerja baru di folder yang Anda pilih untuk ujian. Kode saya mengharapkan lembar kerja bernama "Bobert" yang nyaman bagi saya. Pilih nama yang masuk akal bagi Anda dan ubah kode yang cocok; Saya katakan caranya nanti.
Pilih
Tools
kemudianMacro
kemudianVisual Basic Editor
atau klikAlt
+F11
.Di sebelah kiri Anda akan memiliki Project explorer. Di bagian atas di sebelah kanan Anda akan memiliki area abu-abu. Di bagian bawah di sebelah kanan Anda akan memiliki jendela langsung. Saya dapat berbicara tentang jendela langsung nanti.
Pilih
Insert
kemudianModule
. "Module1" akan ditambahkan ke penjelajah proyek dan area abu-abu menjadi putih. Ini adalah area kode untuk Module1.Anda dapat meninggalkan nama modul sebagai "Module1" atau Anda dapat mengubahnya. Klik F4. Jendela Properties akan ditampilkan. Satu-satunya properti untuk modul adalah namanya. Klik "Modul 1" di "(Nama) Module1", mundur "Module1" dan ketik nama pilihan Anda. Tutup jendela Properties.
Salin kode di bawah ini ke area kode.
Makro ini menangani bagian pertama dari masalah Anda: ia menemukan semua buku kerja di folder dan semua lembar kerja di dalam buku kerja tersebut. Itu membuat daftar lembar kerja di lembar kerja "Bobert". Jika 2.500 buku kerja tidak dapat disatukan dalam satu folder, Anda mungkin perlu makro seperti ini untuk membuat daftar buku kerja dan lembar kerja yang akan diperiksa tetapi makro ini dimaksudkan sebagai latihan latihan. Buat baris tajuk:
Satu-satunya pernyataan yang perlu Anda ubah segera adalah:
Ubah "Bobert" ke nama yang Anda pilih untuk lembar kerja di mana daftar lembar kerja akan dibuat.
Tempatkan kursor pada pernyataan:
dan klik F9. Garis akan menjadi cokelat karena Anda telah membuatnya menjadi breakpoint yang saya jelaskan sebentar lagi.
Setiap kali Anda mengklik F8, satu pernyataan kode akan dipatuhi. Ini memungkinkan Anda menelusuri kode. Jika Anda meletakkan kursor di atas nama variabel, nilainya akan ditampilkan. Anda bisa beralih ke lembar kerja untuk memeriksa apa yang telah berubah.
Jika Anda pikir Anda memahami blok kode, klik F5 dan kode tersebut akan berjalan hingga breakpoint berikutnya. Saya telah menetapkan satu tetapi Anda dapat mengatur sebanyak yang Anda inginkan.
Saya harap ini memberi Anda sesuatu untuk dipikirkan. Jawab pertanyaan saya dan saya bisa memberikan Anda sedikit solusi selanjutnya.
sumber
Dir
fungsi ini adalah salah satu fungsi paling membingungkan di VBA. Memanggil melakukan hal yang berbeda tergantung di mana Anda memanggilnya dan panggilan sebelumnya. Sangat sulit untuk diikuti bagi seseorang yang memulai. Saya bersandar padaFileSystemObject
banyak karena memiliki dukungan pengetikan yang kuat untuk folder / file objek dan ada banyak metode / parameter yang ditetapkan di tips finder Anda.Preserve
Redim dan membuat array Anda dihapus (konsep aneh lain untuk pemula), dan mereka lebih mudah untuk mencari / mengulang.FileSystemObject
fungsi dan koleksi lebih sulit untuk dipahami daripada fungsi yang lebih lama sepertiDir
dan array. Saya percaya ini karena sulit untuk menemukan penjelasanFileSystemObject
dan koleksi yang bagus. Jika Anda dapat memberikan penjelasan seperti itu, itu akan memberi Bobert kesempatan untuk memahami dan memilih dari berbagai teknik.