Избегайте дублирования кода в коде формулы Excel IF - PullRequest
1 голос
/ 23 сентября 2019

Я хочу избежать дублирования кода в формулах Excel.Есть ли способ повторить определенный сегмент кода?

=IF(A1=1,(A1-B2-C3),(A1-B2-C3)+1)

Это было бы особенно полезно, когда речь идет о более сложных или более длинных разделах.Но: все должно быть в ОДНОЙ формуле в ОДНОЙ ячейке.Спасибо!: -)

РЕДАКТИРОВАТЬ: Это мой текущий код.

=IF(ISNUMBER(SEARCH(".amp",A2)),IFERROR(MID(A2,FIND("#",SUBSTITUTE(A2,"-","#",LEN(A2)-LEN(SUBSTITUTE(A2,"-",""))))+1,SEARCH(".html",A2)-FIND("#",SUBSTITUTE(A2,"-","#",LEN(A2)-LEN(SUBSTITUTE(A2,"-",""))))-5),""),IFERROR(MID(A2,FIND("#",SUBSTITUTE(A2,"-","#",LEN(A2)-LEN(SUBSTITUTE(A2,"-",""))))+1,SEARCH(".html",A2)-FIND("#",SUBSTITUTE(A2,"-","#",LEN(A2)-LEN(SUBSTITUTE(A2,"-",""))))-1),"")) 

Удаляет длинный идентификационный номер из любого URL-адреса определенной CMS.Так что

FIND("#",SUBSTITUTE(A2,"-","#",LEN(A2)-LEN(SUBSTITUTE(A2,"-",""))) 

, вероятно, является частью, которая встречается более одного раза и должна быть заменена на код, который не подвержен дублированию.

ПРИМЕР: www.domain.com / path1 / path2 / this-is-an-article-123-dd-123456789.html -> 1234567890 ПРИМЕР: www.domain.com/path1/path2/this-is-an-article-123-dd-1234567890.amp.html -> 1234567890 ПРИМЕР: www.domain.com/path1/this-is-an-article-1234567890.html -> 1234567890

Ответы [ 3 ]

1 голос
/ 23 сентября 2019

В листах Google вы можете использовать REGEXEXTRACT, чтобы получить то, что вы хотите:

enter image description here

Формула в B1:

=REGEXEXTRACT(A1,"\d{8,}")
1 голос
/ 23 сентября 2019

Поместите комплексное общее подвыражение в его собственную ячейку и обратитесь к этой ячейке.

РЕДАКТИРОВАТЬ # 1:

В качестве альтернативы вы можете использовать Именованная формула для подвыражения:

Именованная формула

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

Итак, вот еще один способ найти код в Excel:

Solution

Вот формула в ячейке B1, которую необходимо подтвердитьнажав Ctrl + Shift + Введите , затем перетащите его вниз, чтобы применить его к доске:

{=FILTERXML("<data><a>"&SUBSTITUTE(MID(A1,LARGE(IF(MID(A1,ROW($A$1:INDEX($A:$A,LEN(A1))),1)="-",ROW($A$1:INDEX($A:$A,LEN(A1)))),1)+1,LEN(A1)),".","</a><a>")&"</a></data>","/data/a[1]")}

Для логики этой формулыВы можете прочитать эту статью: Извлечение слов с помощью FILTERXML .

Приветствия:)

Ps.похоже, что GoogleSheet уже выполнил Excel в какой-то области.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...