Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Marlon S

VBA/Excel como contar o número de registros havendo células mescladas?

Recommended Posts

Olá, tenho a seguinte tabela com células mescladas em todos os cantos e gostaria de descobrir quantas propriedades tenho só pra botar dentro de um for em outra função.

Tabela_Complexa.jpg

 

 

Usando .find localizei a palavra "mín", que só existe em um lugar, pulei duas linhas e comecei a contar: 1,2,1,2,1,2:

 

Dim i As Integer

ActiveCell.Offset(3, 0).Select 'pulo três linhas

i = 1

While ActiveCell.Offset(i, 0).Value <> ""

i = i + 1

Wend

num = i

MsgBox num

End sub

 

Acontece que, ao chegar na célula, neste exemplo, "Número do Lote" (e é necessário contar assim, pq nem todas as tabelas possuem os mesmos campos e ñ sei o q pode estar escrito), a conta pára, pq "número do lote", por ser mesclada, conta que está na célula da esquerda.

Não posso fazer a conta pelas da esquerda pq "Vend A", "Vend B", etc estão mescladas, certo?; nem pelas células da direita - Na coluna "entrada" por exemplo - pois pode haver algum campo não preenchido no meio dos números.

 

Alguém, por favor, propõe um novo jeito de contar quantos campos existem entre a linha Vendedor/Semestre/Entrada... e a última linha????

 

Se, ao invés de usar <> "" eu usar IsEmpty ou IsNull, o programa trava.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara... existem algumas opções, uma delas é, ao invés de colocar o "" (que não é funcional) coloca um fim na última linha da tabela e manda buscar até o valor "fim", outra coisa é usar esse "OBS" no final da tabela.

A outra solução é usar um if para contar as mergecells.

ex.:

 

if range("c"&x).mergecells then

obj=obj+1

else

end if

 

sendo x uma variável que você coloca para contar a célula dentro de um Loop e uma outra variável (obj) que você colocaria para contar o valor das células mescladas e somar com as não mescladas.

 

Você pode contar a primeira coluna ("a") que está toda mesclada, e fazer um DO até não ter mais célula mesclada.

 

Abraços e espero ter ajudado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

DSP, segui seus conselhos colocando dentro de um while:0

 

if activecell.mergecells then

obj=obj + 2

else

obj = obj + 1

end if

activecell.offset(obj,0).select

 

mas não deu muito certo.

 

Também não procurei por "Obs", pois nem sempre ele será o último, pode ser que nem exista em outras tabelas. Mas seria uma dica definitiva.

 

Finalmente, contei pela primeira coluna:

 

Dim count As Integer

Range("A10").Select

 

While ActiveCell.MergeCells = True

count = count + 1

ActiveCell.Offset(count, 0).Select

Wend

 

MsgBox ActiveCell.Row

 

E, por algum motivo, ele considerou 3 células a mais, depois que a coluna acaba o que talvez já seja suficiente para usar depois no for, embora, por algum motivo, não dê o resultado exato.

 

De qualquer forma, muito obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.