OK, eu só quero dizer que realmente acredito que seria mais fácil descobrir isso com o VBA, mas eu estava curioso o suficiente para fazer isso como uma fórmula.
=MID(A1,FIND("body",A1,FIND("body",A1,1)+1)+7,FIND("updateAuthor",A1,FIND("updateAuthor",A1,1)+1)-(FIND("body",A1,FIND("body",A1,1)+1)+10))
Isso pressupõe que você pode usar "body" e "updateAuthor" como fez na fórmula que você forneceu. Se você realmente quiser procurar pelas cadeias de caracteres com os símbolos de pontuação, como "body"."
, a localização precisará de algo como CHAR(34) & "body" & CHAR(34) & ":" & CHAR(34)
e CHAR(34) & "," & CHAR(34) & "updateAuthor"
. Se você fizer isso, você também terá que alterar os números de offset que são adicionados (+7 e +10).
Isso também pressupõe que há dois e apenas dois autores na célula. Essa abordagem não funcionará se você tiver um número variável de autores.
A sintaxe da função Mid é MID(text,start_num,num_chars)
.
A sintaxe da função Localizar é FIND(find_text,within_text,start_num)
.
FIND("body",A1,FIND("body",A1,1)+1)+7
Isso lhe dá o número inicial para a função Mid.
A parte interna encontra FIND("body",A1,1)
retorna a localização da primeira ocorrência de "corpo" em A1. Você precisa adicionar 1 para o número inicial do próximo achado ou apenas obterá o mesmo local. O find externo então olha para A1 novamente para "body", mas começa a procurar um caractere após a localização da primeira ocorrência. Você precisa adicionar um deslocamento para encontrar a localização do primeiro caractere após o seu "body":"
, porque a função de localização lhe dirá onde está o b
.
FIND("updateAuthor",A1,FIND("updateAuthor",A1,1)+1)-(FIND("body",A1,FIND("body",A1,1)+1)+10
Isso lhe dá o número de caracteres para a função Mid.
Essas instruções de localização recursivas funcionam da mesma forma acima para encontrar a diferença entre o início das informações do autor e o início da tag final, ","updateAuthor
, com o deslocamento apropriado adicionado no final.