Я могу предложить этот скрипт powershell:
$EXECUTIONPOLICY = Get-ExecutionPolicy
Set-Executionpolicy -Scope CurrentUser -ExecutionPolicy Bypass
$old='SUM(Y23:Y24,X79,Y84:Y85)/ SUM(X23:X24,Y79,X84:X85)'
$new='SUM(Y23:Y24,X79,Y84:Y85)/ SUM(X23:X24,Y79,X84:X105)'
Get-ChildItem ".\*.xlsx" | Copy-Item -Destination "excel.zip"
Expand-Archive excel.zip -DestinationPath excel
Get-Item ".\excel\xl\worksheets\*.xml"| ForEach {(Get-Content -Path $_.FullName).Replace($old,$new) | Set-Content -Path $_.FullName}
Compress-Archive -Path ".\excel\*" -DestinationPath excel -Force
Rename-Item "excel.zip" -NewName "new.xlsx"
Remove-Item excel -Recurse
Set-ExecutionPolicy $EXECUTIONPOLICY
Скрипт PS1
Что делает скрипт:
Он заменяет спецификацию c формула Обратите внимание, что замена не указана для ячейки c (ячейка AN9). Я предположил, что формула появляется только 1 раз на листе.
Если замена должна быть абсолютно специфичной для ячейки c (в случае, если «неправильная формула» все еще должна существовать в другом месте на том же листе ), мы можем исправить код позже.
Скрипт поддерживает любую книгу независимо от ее имени. Он также поддерживает несколько листов. Таким образом, где бы формула не была найдена, она будет заменена (лист 1, лист 2, лист 3, лист 4, mysheet, sales, ...)
Как ее использовать:
1 . Поместите файл .xlsx в папку по вашему выбору. В папке должен быть ТОЛЬКО один файл .xlsx, который вы хотите исправить. 2. Поместите скрипт .ps1 в ту же папку. 3.Нажмите правой кнопкой мыши на сценарии .ps1, затем «Выполнить с помощью Powershell».
Будет создан новый файл: «new.xlsx»
Прочее:
I необходимо исправить формулу Excel (отсутствует ")"). Я надеюсь, что это правильно. Я не уверен на 100%, что скрипт будет выполнен без прав администратора. Даже с этим обходом политики освобождения.