Для получения подстроки от \"body\" до второй { в формуле экселя можно использовать функцию НАЙТИ и СЛЕВА.
НАЙТИ("искомый_текст", "текст_в_котором_ищем", [стартовый_индекс]) - возвращает индекс первого символа искомого текста в заданной строке, начиная с указанного индекса.
СЛЕВА("текст", "найти_текст", [количество_символов]) - возвращает указанное количество символов из текста перед искомым текстом.
Используя эти функции, формула будет выглядеть следующим образом:
=СЛЕВА(ДЕКОДИРОВАТЬJSON(А2);""body":") & НАЙТИ("{", ДЕКОДИРОВАТЬJSON(А2), НАЙТИ("{"body":", ДЕКОДИРОВАТЬJSON(А2))+1) - НАЙТИ(":", ДЕКОДИРОВАТЬJSON(А2), НАЙТИ("{", ДЕКОДИРОВАТЬJSON(А2), НАЙТИ("{"body":", ДЕКОДИРОВАТЬJSON(А2))))+1)
где:
- А2 - адрес ячейки, которая содержит исходный текст;
- "body": - искомый текст;
- ДЕКОДИРОВАТЬJSON - функция, которая декодирует JSON-текст в эксель-таблицу.
Данная формула извлечет подстроку от \"body\" до второй { из исходного текста. Например, для текста "эксель формула подстроки для {"type":"SYNC","body":{"TRGetQuotes":{"RequestKey":{"name":"KZTONORR=CNKZ"},{"name":"EURKZTR=CNKZ"},{"name":"RUBKZTR=CNKZ"},{"name":"GBPKZTR=CNKZ"},{"name":"EUR="},{"name":"RUB="},{"name":"GBP="},{"name":"CNYKZTR=CNKZ"},{"name":"XAUKZTR=CNKZ"},{"name":"AEDKZTR=CNKZ"},{"name":"EURRUB="},{"name":"CNH="},"CBSRefCategory":0,"CBSClientType":0}}}", формула вернет подстроку "{\"TRGetQuotes\":{\"RequestKey\":{\"name\":\"KZTONORR=CNKZ\"},{\"name\":\"EURKZTR=CNKZ\"},{\"name\":\"RUBKZTR=CNKZ\"},{\"name\":\"GBPKZTR=CNKZ\"},{\"name\":\"EUR=\"},{\"name\":\"RUB=\"},{\"name\":\"GBP=\"},{\"name\":\"CNYKZTR=CNKZ\"},{\"name\":\"XAUKZTR=CNKZ\"},{\"name\":\"AEDKZTR=CNKZ\"},{\"name\":\"EURRUB=\"},{\"name\":\"CNH=\"},\"CBSRefCategory\":0,\"CBSClientType\":0}}}\"".