Notifications
Clear all

Preencher espaços vazios com fórmula

17 Posts
6 Usuários
0 Reactions
2,744 Visualizações
(@rafaelgs)
Posts: 0
New Member
Topic starter
 

Oi pessoaal, nessa pasta eu tenho duas planilhas... Uma com a matriz e a outra com apenas a fórmula, para que eu nao precise ficar digitando toda vez que eu abrir o arquivo.
Bom, Toda vez que eu colo essa fórmula em um número muito grande de células, algumas delas ficam com 0 ou - (Dependendo da versão do Excel)
Quando isso acontece, para eu reparar essa falha, eu preciso ficar filtrando coluna por coluna, acontece que são mais de 5 mil colunas para ficar filtrando, então eu queria saber se há alguma forma ou fórmula que eu possa substituir esses espaços vazios pela fórmula....

Abraçosssssssssssssssssssss

 
Postado : 03/11/2015 5:34 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa noite Rafael

Eu não entendi.

[]s

 
Postado : 03/11/2015 5:41 pm
(@luizhcosta)
Posts: 0
New Member
 

Olá,

Você poderá encontrar de outra maneira, mas tente assim.:

Sub zeros()
    Range("C3:HCY5511").Select
    Selection.SpecialCells(xlCellTypeBlanks).Select
    Selection.FormulaR1C1 = "0"
    Selection.Style = "Comma"
End Sub
 
Postado : 03/11/2015 8:06 pm
(@luizhcosta)
Posts: 0
New Member
 

A sua explicação está meio confusa, confesso que depois de mandar a macro, me surgiram dúvidas. Refaça sua dúvida e acrescente mais de detalhes, mais sequências.

 
Postado : 03/11/2015 8:13 pm
(@mprudencio)
Posts: 0
New Member
 

Eu posso estar maluco mas se eu entedi vc quer reiniciar seu arquivo!!!!

Se é isso é só salvar o arquivo modelo (cheio de formulas) com um novo nome a cada vez quer for reiniciar.

Se for dentro do mesmo arquivo é so criar uma copia da propria aba a cada vez que necessitar.

Nao precisa, e nem faz sentido, ficar copiando formulas a cada vez que for criar um novo arquivo.

PS Eu nem olhei o seu arquivo.

 
Postado : 03/11/2015 8:19 pm
(@rafaelgs)
Posts: 0
New Member
Topic starter
 

Oi pessoal. Vou explicar melhor.
Essa é uma macro que vai no google buscar os resultados, mas o google só permite que eu faça 10 consultas para cada 10 segundos. Como o excel é mais rápido que isso, quando ultrapassa esse limite, as consultas retornam o resultado "0".
Acontece que esse " 0" fica espalhado pelas planilhas, daí eu queria saber como faço para recalcular esses espaços vazios. Atualmente eu estou aplicando um filtro na coluna e selecionando os "0" para que eu possa colar a fórmula novamente. Preciso de um jeito mais fácil de colar essa fórmula nas células que retornaram o valor "0" por limitação do google.

 
Postado : 04/11/2015 8:23 am
(@rafaelgs)
Posts: 0
New Member
Topic starter
 

Oi Luiz, cara isso me deu uma luz.
Com essa macro você conseguiu selecionar todas as células vazias e convertê-las em "0".
Bom, eu preciso selecionar todas as células "0" em fórmula, para que eu consiga recalcular a distância da macro km_Distancia.
Você consegue me ajudar nisso???

 
Postado : 04/11/2015 8:35 am
(@rafaelgs)
Posts: 0
New Member
Topic starter
 

Contando a história:

Utilizo uma macro que vai no google buscar a distância entre duas cidades, via rodovia.
acontece que o google me dá duas limitações:

1ª) 2.500 consultas por IP
2ª) 10 consultas para cada 10 segundos.

Obs.: Quando ultrapasso essa limitante, os valores retornados são valores "0"

Etapas do que tenho feito:

1- Colo a fórmula em uma matriz de 50x50 células
2- Ao final da colagem, metade dos resultados retornam valor "0" (Limitante nº2)
3- Colo valor para o cálculo das fórmulas ficarem mais leves
4- Filtro coluna por coluna em busca dos valores "0"
5- Colo a fórmula pela segunda vez nas células de valor "0" para retornar o resultado do google.
6- Loop infinito :(

 
Postado : 04/11/2015 8:56 am
(@mprudencio)
Posts: 0
New Member
 

Vc busca essa informação em algum site especifico ou apenas joga na busca do google.

 
Postado : 04/11/2015 4:24 pm
(@rafaelgs)
Posts: 0
New Member
Topic starter
 

Prudêncio, a macro busca as informações no API do google ( https://developers.google.com/maps/docu ... ions/intro).

a Macro é essa aqui:

Function Km_Distancia(Origin As String, Destination As String) As Double
    'Requer referência ao: 'Microsoft XML, v6.0'

    Dim Solicitacao As XMLHTTP60
    Dim Doc As DOMDocument60
    Dim Distancia_Pontos As IXMLDOMNode

    Let Km_Distancia = 0

    'Checa e limpa as entradas
    On Error GoTo Sair

    Let Origin = Replace(Origin, " ", "%20")
    Let Destination = Replace(Destination, " ", "%20")

    ' Le os dados XML da API do Google Maps.
    Set Solicitacao = New XMLHTTP60

    Solicitacao.Open "GET", "http://maps.googleapis.com/maps/api/directions/xml?origin=" _
        & Origin & "&destination=" & Destination & "&sensor=false", False
    Solicitacao.send

    ' Tornando o XML legível por usar o XPath
    Set Doc = New DOMDocument60

    Doc.LoadXML Solicitacao.responseText

    ' Obtendo o valor da distância entre os nós.
    Set Distancia_Pontos = Doc.SelectSingleNode("//leg/distance/value")
    If Not Distancia_Pontos Is Nothing Then Km_Distancia = Distancia_Pontos.Text / 1000

Sair:
    ' Tidy up
    Set Distancia_Pontos = Nothing
    Set Doc = Nothing
    Set Solicitacao = Nothing
End Function
 
Postado : 05/11/2015 7:04 am
(@luizhcosta)
Posts: 0
New Member
 

Qual a fórmula a ser inserida no lugar dos ZEROS ?

Oi Luiz, cara isso me deu uma luz.
Com essa macro você conseguiu selecionar todas as células vazias e convertê-las em "0".
Bom, eu preciso selecionar todas as células "0" em fórmula, para que eu consiga recalcular a distância da macro km_Distancia.
Você consegue me ajudar nisso???

 
Postado : 05/11/2015 7:29 am
(@rafaelgs)
Posts: 0
New Member
Topic starter
 

Qual a fórmula a ser inserida no lugar dos ZEROS ?

Oi Luiz, cara isso me deu uma luz.
Com essa macro você conseguiu selecionar todas as células vazias e convertê-las em "0".
Bom, eu preciso selecionar todas as células "0" em fórmula, para que eu consiga recalcular a distância da macro km_Distancia.
Você consegue me ajudar nisso???

Demorei para responder pq nao tinha visto que o tópico já estava na segunda página.
Bom, é a fórmula que está na folha "f" do workbook.

=km_distancia(x,y)

x - Valor que está na direção da célula, mas em uma coluna fixa
y - Valor que está na direção da célula, mas em uma linha fixa

 
Postado : 06/11/2015 2:56 pm
(@rafaelgs)
Posts: 0
New Member
Topic starter
 

Oi pessoal, alguém tem alguma ideia?
ABraços

 
Postado : 11/11/2015 4:03 pm
(@edsonbr)
Posts: 0
New Member
 

Olá, Rafael, achei muito interessante essa sua consulta...

Vejo que é um trabalhão danado mesmo esse q vc tem q fazer. Não cheguei a analisar seu código nem tampouco conheço essa API do Google, mas fiquei imaginando o seguinte:

E se...

Como vc tem essa limitação de 10 consultas/10 segundos, e se, ao invés de se concentrar em preencher com fórmulas e tudo o mais, se vc pusesse um timer para que o Excel aguardasse o tempo mínimo entre consultas (ou um pouco mais, por segurança), limitando-o de forma que sua consulta não progrida tão rapidamente?

A (muito) tempos atrás resolvi uma situação semelhante dessa maneira - embora fosse de atualização de vínculos a cada x segundos, usando o método OnTime (objeto Application). Imagino um loop onde após 10 consultas terem ocorrido ele aguarde o timer de 10s ocorrer para só então iniciar a próxima. Zera o timer novamente e assim por diante.

Acho q ainda tenho um esboço simples do funcionamento disso, se quiser posso dar uma garimpada aqui (isso foi por volta de 2002, se não me engano).

Precisando, avise, ok?

 
Postado : 11/11/2015 10:37 pm
(@rafaelgs)
Posts: 0
New Member
Topic starter
 

Olá, Rafael, achei muito interessante essa sua consulta...

Vejo que é um trabalhão danado mesmo esse q vc tem q fazer. Não cheguei a analisar seu código nem tampouco conheço essa API do Google, mas fiquei imaginando o seguinte:

E se...

Como vc tem essa limitação de 10 consultas/10 segundos, e se, ao invés de se concentrar em preencher com fórmulas e tudo o mais, se vc pusesse um timer para que o Excel aguardasse o tempo mínimo entre consultas (ou um pouco mais, por segurança), limitando-o de forma que sua consulta não progrida tão rapidamente?

A (muito) tempos atrás resolvi uma situação semelhante dessa maneira - embora fosse de atualização de vínculos a cada x segundos, usando o método OnTime (objeto Application). Imagino um loop onde após 10 consultas terem ocorrido ele aguarde o timer de 10s ocorrer para só então iniciar a próxima. Zera o timer novamente e assim por diante.

Acho q ainda tenho um esboço simples do funcionamento disso, se quiser posso dar uma garimpada aqui (isso foi por volta de 2002, se não me engano).

Precisando, avise, ok?

Oi Edson, cara você me deu uma grande ideia. Vê se consegue esse material ai, dai eu já passo a régua e fecho a conta. rssrsr
Abração

 
Postado : 25/11/2015 12:32 pm
Página 1 / 2