RESUMIR DADOS REPETIDOS

PAYDANA 08/07/2013 15:24:16
#425716
Pessoal, tenho uma listbox com dados assim:

01
01
01
01
02
02
01
03
02
01
01
01
01
01
01

Entao quero transferir estes dados para outra listbox de forma resumida assim

01 = 4x
não é 01 = 2x
01 = 1x
não é 01 = 2x
01 = 6x


Ja rachei a cuca aqui e não consegui escrever um código pra isso. Me sugerem alguma coisa?
SAMUKA 08/07/2013 15:39:07
#425717
Vc cria uma variavel array com tamanho igual ao listBox.ListCount

Depois vc faz um loop no primeiro listBox e usando um IF ou um SELECT CASE, vc soma 1 para cada correspondência.

Em seguida vc faz um novo loop com o array e para cada item valor > 0 você adiciona no outro listBox.

A lógica é essa. Dá conta do código?
KERPLUNK 08/07/2013 15:57:00
#425718
Espere pelo: [Ô]Teria um exemplo do código?[Ô] ou algo similar...
FILMAN 08/07/2013 17:02:55
#425722
Olá, PAYDANA

Acho que você não procurou direito aqui no fórum! Porque estou dizendo isso? Porque você alguns meses atrás abriu um tópico sobre o mesmo assunto e foi solucionado!

Porém, não procurou direito nos seus projetos!

verifique no link abaixo!
http://www.vbmania.com.br/pages/index.php?varModulo=Forum&varMethod=abrir&varID=411982

Espero ter ajudado
PAYDANA 08/07/2013 17:03:27
#425723
Eu tenhtei da forma que você falou SAMUKA, mais me perco na logica sempre

Private Sub Command14_Click()
Dim Tm As Variant
Tm = [Ô]0[Ô]
For r = 0 To List1.ListCount - 1
S = List1.List(r)

If InStr(S, [Ô]01[Ô]) > 0 Then Tm = Tm + 1 Else List2.AddItem Tm: Tm = [Ô]0[Ô] [ô]DAE APARTIR DAQUI EU TENHO QUE CONTAR OS QUE NAO TEM E é ONDE ESTOU ME PERDENDO PORQUE QUANDO VOLTA A TER NOVAMENTE O 01 ENTAO COMEÇA NOVAMENTE O CICLO

Next r
List2.AddItem stem
End Sub
SAMUKA 08/07/2013 17:11:18
#425724
Você precisa de uma variavel Array

Dim tm(list1.ListCount) as Integer


No IF, pode ser SELECT CASE:

SELECT CASE LEFT(S,2)
CASE [Ô]01[Ô] : tm(0) = tm(0) + 1
CASE [Ô]02[Ô] : tm(1) = tm(1) + 1

PAYDANA 08/07/2013 17:13:47
#425725
Tem razão FILMAN, to olhando aqui se da pra contar no caso somente o 01

Realmente não sei onde ando com a cabeça =/
FILMAN 08/07/2013 17:18:25
#425726
Sim tem como sim

onde tem o laço você faz um IF

For i = 0 To List1.ListCount - 1
item_atual = List1.List(i)
Cont = 0

If Trim(item_atual) = [Ô]01[Ô] Then

For x = 0 To List1.ListCount - 1
If (item_atual = List1.List(x)) Then
Cont = Cont + 1
End If
Next

If Cont > 0 Then
ReDim Preserve guarda_contagem(iVet)
If Not Repetido(item_atual & [Ô]|[Ô] & Cont, guarda_contagem) Then
guarda_contagem(iVet) = item_atual & [Ô]|[Ô] & Cont
iVet = iVet + 1
End If
End If

End If
Next


Repare o IF antes de começar a contagem
SAMUKA 08/07/2013 17:23:47
#425727
FILMAN, o problema de se dar um código pronto é exatamente esse.

Por isso a crítica do KERPLUNK, por isso que passei a lógica primeiro.
KERPLUNK 08/07/2013 17:33:27
#425730
Citação:

:
FILMAN, o problema de se dar um código pronto é exatamente esse.

Por isso a crítica do KERPLUNK, por isso que passei a lógica primeiro.


é por aí. Enquanto ficarmos passando código pra resolver o problema dos usuários, não estaremos ajudando de fato, temos que fazer com que os usuários entendam o que estão fazendo, com isso, eles mesmos podem escrever código. Enquanto ficarmos [Ô]presos nesse loop[Ô], não vamos ajudar ninguém, pelo menos não ajudar de verdade.
PAYDANA 08/07/2013 17:34:33
#425731
Private Sub Verifica()
Dim Cont As Integer
Dim iVet As Integer
Dim i, x, z As Integer
Dim item_atual As String
Dim guarda_contagem() As String

iVet = 0
For i = 0 To List1.ListCount - 1
item_atual = List1.List(i)
Cont = 0

If List1.List(x) = [Ô]01[Ô] Then [ô]novo

For x = 0 To List1.ListCount - 1
If (item_atual = List1.List(x)) Then
Cont = Cont + 1
End If
Next
If Cont > 0 Then
ReDim Preserve guarda_contagem(iVet)
If Not Repetido(item_atual & [Ô]|[Ô] & Cont, guarda_contagem) Then
guarda_contagem(iVet) = item_atual & [Ô]|[Ô] & Cont
iVet = iVet + 1
End If
End If
End If [ô]novo
Next

For i = 0 To UBound(guarda_contagem) - 1
List2.AddItem Split(guarda_contagem(i), [Ô]|[Ô])(0) & vbTab & vbTab & Split(guarda_contagem(i), [Ô]|[Ô])(1)
Next
End Sub

Ve se ta certo Filman, não deu certo não

Não estou fazendo desfeita SAMUKA, e que mecho com numeros então minha cabeça e uma confusão
Pesso desculpas a todos e entendo vossos sentimentos
Página 1 de 3 [25 registro(s)]
Tópico encerrado , respostas não são mais permitidas