Автоматическое раскрытие формулы, содержащей промежуточные формулы в предыдущих ячейках - PullRequest
1 голос
/ 27 сентября 2019

У меня есть следующий сценарий:

A2 is a text cell, 
B2 contains "=FIND("data",A2)", 
C2 contains "=FIND(" ",A2,B2)+1",
D2 contains "=FIND(" ",A2,C2)",
E2 contains "=D2-C2",
G2 contains "=MID(A2,C2,E2)"

Есть ли способ для формулы в G2 =MID(A2,C2,E2) выполнить автоматическую оценку по приведенной ниже формуле

=MID(A2, FIND(" ",A2,FIND("data",A2))+1, FIND(" ",A2,(FIND(" ", A2,FIND("data",A2))+1)) - (FIND(" ",A2,FIND("data",A2))+1))

, не проходя черезпроцесс ручного копирования и замены предыдущих формул от B2 до E2 в G2?

Дополнительная информация : Здесь столбцы с B по E содержат промежуточные формулы для построения окончательной формулы в столбце G для извлеченияслово сразу после слова data в текстовом столбце A. Цель состоит в том, чтобы в столбце G была указана окончательная формула для ссылки только на столбец A вместо многих предыдущих столбцов B на E

Большое спасибо за вашепомогите заранее.

Example screen shot

Ответы [ 2 ]

0 голосов
/ 30 сентября 2019

Попробуйте следующее:

=TRIM(MID(SUBSTITUTE(MID(A2,FIND("data",A2),LEN(A2))," ",REPT(" ",100),2),6,100))

или

=FILTERXML("<t><s>"&SUBSTITUTE(A2," ","</s><s>")&"</s></t>","//s[text()='data']/following-sibling::*[1]")

Обратите внимание, если слово, которое вы пытаетесь извлечь, имеет символ, такой как , или ? рядом сих символ также будет извлечен.Например.в следующем предложении: Are you data ok?, приведенные выше формулы вернут ok? вместо ok.

Один из способов исправить это - сначала извлечь все слова (с символами), а затем использовать ЗАМЕНА функция для замены всех символов, например, пустым "".

Дайте мне знать, если у вас есть какие-либо вопросы.Ура:)

0 голосов
/ 30 сентября 2019

Лично я предпочитаю решение использовать вспомогательные клетки, а не иметь одну гигантскую вложенную формулу.Здесь это, кажется, не имеет большого значения, но вспомогательные клетки иногда могут значительно улучшить эффективность формул.Кроме того, использование вспомогательных ячеек упрощает понимание формул (поскольку вы можете видеть результаты промежуточных шагов).На вашем месте я бы сохранил вспомогательные ячейки и просто скрыл бы эти столбцы.

Но в любом случае, отвечая на ваш вопрос, есть немного возможностей для улучшения.Смотри ниже.Обратите внимание, что вы найдете «данные» (с пробелом в конце), а затем сразу добавьте 5.Это пропускает один шаг.

enter image description here

Один комментарий: Вы можете добавить дополнительную проверку в том случае, если целевое слово является последним словом встрока.Если это последнее слово, то после него не будет пробела (что приведет к ошибке).

Например, измените это:

= FIND(" ",A2,B2)

на следующее:

= IFERROR(FIND(" ",A2,B2),LEN(A2))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...