Який найшвидший спосіб замінити значення в клітинках за допомогою VBA


0

Окремі клітинки моєї робочої книги містять значення "A". Я хочу замінити значення "A" на "B".

Вони розсипаються по декількох аркушах. Який найефективніший спосіб здійснити заміну в VBA?


1
Чому ви не можете просто шукати та замінювати?
Rhys Gibson

Мені потрібно автоматизувати цю дію. Я працюю над проектом перетворення, який включає не менше 50 книг. Частина вимоги полягає в тому, що робочі зошити повинні мати змогу працювати у двох різних версіях Excel, 2002 та 2010 рр., Паралельно. Робочі зошити 2002 року постійно оновлюються.
Ентоні Конг

Кілька робочих зошитів або декілька аркушів (у вашому запитанні вказані аркуші, але в коментарі вище написано робочі зошити). Якщо це лише 1 робоча книжка, ви можете зробити це за допомогою Замінити все, вибравши в межах «Робоча книга» в розділі «Параметри». Якщо це декілька робочих зошитів, то, ймовірно, ви дотримуєтесь більш складних VBA, щоб відкрити кожну робочу книжку по одному і використовувати щось на зразок рішення Люка на кожній з них. Це противно. Чи немає кращого рішення, ніж постійно повторювати заміну?
Ріс Гібсон

Відповіді:


2

Це працює для мене

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

Все, що я зробив, - це використовувати макрореєстратор для запису операції пошуку та заміни, а потім додати цикли.

Якщо ви не хочете вносити зміни до всіх відкритих робочих книжок, видаліть зовнішню For Nextпару, але я подумав, що це полегшить перегляд декількох робочих книжок одночасно.


1
Це також замінить формулу, наприклад =A1+1, стане =B1+1, мабуть, не тим, що потрібно. Щоб уникнути цього замініть sh.Cells.Replaceнаsh.Cells.SpecialCells(xlCellTypeConstants).Replace
chris neilsen
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.