Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Редактирование excel`евской формулы, или тройной вложенный цикл

Ответить
Настройки темы
CMD/BAT - Редактирование excel`евской формулы, или тройной вложенный цикл

Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Отправить PM | Цитировать


Доброго времени суток. Есть небольшая задача.
Суть задачи в том, что имеется excel`евская формула (точнее для googlesheets). В ней, кроме всего остального, есть 4 пары чисел, которые нужно заменить по принципу n=n+1
То есть, к примеру, 345 346 347 348 на 349 350 351 352. Затем на 353 354 355 356 и т.д. И таких проходов 50. Соответственно, вручную очень даже тягостно менять 200 чисел.
Утренняя задумка по автоматизации процесса немного не удалась.

Код: Выделить весь код
@echo off
title Edit formuls
setlocal enabledelayedexpansion

set infile=inputfile.txt
set TMPFL=tempfile.txt
set newfile=newfile.txt
set find=348
set replace=352

copy !infile! !infile!.bak
copy !infile! !TMPFL!

pause

for /L %%i in (1,1,50) do (
	for /L %%j in (1,1,4) do (
		for /F "tokens=* delims=," %%n in (!TMPFL!) do ( 
			set LINE=%%n
			set TMPR=!LINE:%find%=%replace%!
			set /A find=!find!-1
			set /A replace=!replace!-1
			echo !TMPR!>!TMPFL!
		)
	)
	echo !TMPR!>>!newfile!
	echo.>>!newfile!
	set /A find=!find!+7
)

cls
echo Complete!
pause
exit
В выходном файле получаем 50 одинаковых формул.
Если необходимо, прикрепляю саму формулу (inputfile).

Код: Выделить весь код
=IF(A15=$Z$345; $AD$345; (IF(A15=$Z$346; $AD$346; (IF(A15=$Z$347; $AD$347; (IF(A15=$Z$348; $AD$348; (IF(A15=$AF$345; $AJ$345; (IF(A15=$AF$346; $AJ$346; (IF(A15=$AF$347; $AJ$347; (IF(A15=$AF$348; $AJ$348; 0)))))))))))))))
"Протащить" ее не вариант. Даже дело не в том, что ссылки на ячейки абсолютные. (Хотя это одно из необходимых условий, но уже для другого). В общем, прошу помощи по батнику.
Собственно причина его неработоспособности была найдена. В третьем цикле, переменным find и replace не присваиваются новые значения. Гугл помог только в сторону setlocal enabledelayedexpansion. Если расширенную обработку включать именно в цикле, то вываливается в превышение рекурсии.

Отправлено: 11:45, 14-07-2014

 


Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Редактирование excel`евской формулы, или тройной вложенный цикл

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Вложенный цикл в цикле etherlord Скриптовые языки администрирования Windows 4 27-04-2023 06:03
2007 - как объединить две формулы в EXCEL Наталья78 Microsoft Office (Word, Excel, Outlook и т.д.) 4 06-06-2020 15:16
CMD/BAT - [решено] вложенный цикл for с условием if ivanxam Скриптовые языки администрирования Windows 14 23-05-2014 21:24
2013 - [решено] использование формулы ВПР в Excel Vizit0r Microsoft Office (Word, Excel, Outlook и т.д.) 2 31-03-2013 17:33
Разное - Помогите Excel формулы диапазоны vin26com Программирование и базы данных 0 19-11-2010 17:02




 
Переход