Notifications
Clear all

transformar um intervalo de células em número

8 Posts
4 Usuários
1 Reactions
1,774 Visualizações
(@cimerio)
Posts: 0
New Member
Topic starter
 

bom dia. tenho uma macro que extrai valores de um relatório, em texto. mas preciso sempre converter em número pra somar os valores neste intervalo (c2:200).

como posso fazer uma macro pra converter os valores nesta celula em numero. ou valor monetário?

olhei o CInt mas parece que ele nao aplica num intervalo de células.

 
Postado : 23/07/2020 9:26 am
(@televisaos)
Posts: 0
New Member
 

Bom dia cimerio,

Vc poderia tentar fazer um loop em todas as células do intervalo e convertê-las individualmente. 

Att, Televisaos

 
Postado : 23/07/2020 10:20 am
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 
Sub Converter_em_Inteiros
Dim i As Long
Dim UltimaLinha

UltimaLinha = Sheets("Plan1").Cells(Cells.Rows.Count,3).End(XlUp).Row
'Se os dados começarem na linha 2 após o cabeçalho
If UltimaLinha < 2 Then UltimaLinha = 2

For i = 2 To UltimaLinha
Range("C" & i).Value = CInt(Range("C" & i).Value)
Next i
End Sub
 
Postado : 23/07/2020 11:19 am
(@cimerio)
Posts: 0
New Member
Topic starter
 

podem me ajudar a construir um codigo pra isso?

Wagner, quero fazer igual o seu paradigma, mas não usando excesso de referencias pra outras variaveis

 

eu queria usar tão somente o

for i = 2 to 200 

Worksheets("plan1").Cells(i, 3).Value

 

 

 
Postado : 24/07/2020 11:03 am
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

@cimerio,

 

Só você completar seu código...

for i = 2 to 200

Worksheets("Plan1").Cells(i, 3).Value = CInt(Worksheets("Plan1").Cells(i, 3).Value)

Next i

 
Postado : 24/07/2020 4:29 pm
(@cimerio)
Posts: 0
New Member
Topic starter
 

obrigado, Wagner

aparentemente, deu certo.

mas apareceu uma caixa de aviso na execucao.

Run-time Error

Overflow

 
Postado : 29/07/2020 3:29 pm
(@edsonbr)
Posts: 0
New Member
 

Deu Overflow pq talvez algum dos valores que estão nas células seja maior do que o tipo de dados Integer (-32.768 a +32.767) ao ser convertido com CInt(...),

Ao invés disso, tente converter para Long usando CLng(...)

Vc também poderia tentar fazer uma operação algébrica simples para transformar o intervalo em número numa só operação, ao invés de loop (isso se todos forem números):

Range("C2:C200").Value = 1*Range("C2:C200").Value

Lembrando que, caso alguma célula da coluna esteja com o formato definido como texto, antes de fazer a operação anterior melhor limpar todos os formatos da coluna. 

 

 
Postado : 29/07/2020 9:01 pm
Wagner Morel reacted
(@cimerio)
Posts: 0
New Member
Topic starter
 

@edsonbr na verdade, todas as celulas que quero converter vem como texto primeiro.

 
Postado : 30/07/2020 8:30 am