Boa tarde meninos,
Rafael, estou há um tempo querendo dizer isso:
Gosto das suas respostas, objetivas e bem escritas, mostram seu conhecimento bem avançado tanto no Excel quanto no VBA. Tenho imenso respeito pelo seu trato e seu conhecimento. Um dia espero conversarmos sobre oportunidades.
Avk, a solução do Rafael deve funcionar (não testei), mas escrevi uma menorzinha, se quiser tentar:
Public Function Elemento(ByRef Texto As Variant, _
Optional ByVal Delimitador As String = " ", _
Optional ByVal Indice As Long = 1) As Variant
On Error GoTo TratarErro
Elemento = VBA.Split(Application.WorksheetFunction.Trim(Texto), Delimitador)(Indice - 1)
On Error GoTo 0
Exit Function
TratarErro:
Elemento = "#Erro"
End Function
Só peço cuidado, não abuse das UDFs, mesmo que sejam simples, podem retardar o tempo geral de recálculo!
Mas vou concordar com o Rafael, não existe função que faz isso no Excel.
Essa que eu passei, chama-se elemento() como vc solicitou, e vc tem 3 parametros, sendo dois opcionais.
1) Texto (ou o endereço da célula)
2) Qual Delimitador (no seu caso era espaço), eu adotei que se vc suprimir este parametro, adotar-se-á espaço por padrão
3) Qual elemento (eu padronizei em 1 caso seja suprimido)
Para usar faça o seguinte:
- Abra o Excel abra o arquivo aonde quer isso funcionando
- Tecle Ctrl+F11
- Tecle Ctrl+R
- Vai ver uma lista de arquivos, encontre o seu ali, clique direito nele e Inserir / Módulo
- Cole o código acima
- Volte na planilha e escreva numa célula (exemplo, C5), sei lá:
a b c e d g
- Vá noutra célula e digite:
=elemento(C5;" ";3)
- Veja que o resultado é c
Pronto.
Agora, se você tem horários... Daí o trabalho de tratar o texto que parece uma hora e assim transformá-lo numa hora!
- Use:
=valor.tempo(elemento(C5;" ";3))
- Não pode esquecer de formatar a célula hora, senão você verá um número decimal ali dentro...
É isso!
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Postado : 31/03/2015 12:58 pm