Apa cara tercepat untuk mengganti nilai dalam sel melalui VBA

0

Sel-sel tertentu di buku kerja saya mengandung nilai 'A'. Saya ingin mengganti nilai 'A' dengan 'B'.

Mereka tersebar di beberapa lembar. Apa cara paling efisien untuk mengimplementasikan penggantian di VBA?

Anthony Kong
sumber
1
Mengapa Anda tidak bisa mencari dan mengganti saja?
Rhys Gibson
Saya perlu mengotomatiskan tindakan ini. Saya sedang mengerjakan proyek konversi yang mencakup tidak kurang dari 50 buku. Bagian dari persyaratan adalah bahwa buku kerja harus dapat berjalan di dua versi excel yang berbeda, 2002 dan 2010, secara paralel. Buku kerja 2002 terus diperbarui.
Anthony Kong
Banyak buku kerja atau beberapa lembar (pertanyaan Anda mengatakan lembar tetapi komentar di atas mengatakan buku kerja). Jika hanya 1 buku kerja, maka Anda dapat melakukan ini dengan Ganti Semua, pilih Dalam: Buku Kerja di bagian Opsi. Jika beberapa buku kerja, maka Anda mungkin tetap dengan beberapa VBA yang lebih kompleks untuk membuka setiap buku kerja satu per satu dan menggunakan sesuatu seperti solusi Luke pada masing-masing. Ini jahat. Apakah tidak ada solusi yang lebih baik daripada terus-menerus mengulangi penggantinya?
Rhys Gibson

Jawaban:

2

Ini bekerja untuk saya

For Each wb In Workbooks
    For Each sh In wb.Worksheets
        sh.Cells.SpecialCells(xlCellTypeConstants).Replace What:="a", Replacement:="b", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
    Next sh
Next wb

Yang saya lakukan adalah menggunakan perekam makro untuk merekam operasi menemukan dan mengganti, kemudian menambahkan loop.

Jika Anda tidak ingin membuat perubahan di semua buku kerja terbuka, hapus bagian luar For Next berpasangan, tetapi saya pikir ini akan membuatnya lebih mudah untuk dijalankan di beberapa buku kerja sekaligus.

Luke
sumber
1
Ini juga akan menggantikan dalam formula, misalnya =A1+1 akan menjadi =B1+1, mungkin bukan yang dibutuhkan. Untuk menghindari ini ganti sh.Cells.Replace dengan sh.Cells.SpecialCells(xlCellTypeConstants).Replace
chris neilsen