SOMAR DADOS DO FLEXGRID BASEADO EM CRITERIOS
                    Tenho um flexgrid que possui varias colunas... a coluna 4 exibe o tipo de compra (DINHEIRO, CHEQUE, CARTAO, ETC) e na coluna 5 exiber o campo VALOR.
então meu grid fica mais ou menos assim:
| CLIENTE | TIPO | VALOR |
| Maria | Dinheiro | 10,00 |
|João | Cartao | 22,00 |
| Raimundo | Dinheiro | 15,00 |
| Ana | Cheque | 50,00 |
então gostaria de mostrar num textbox a soma somente dos dinheiros
txtDinheiro.text = 25,00
ou seja, ele tem que ver na coluna 4 o que é dinheiro e pegar o valor na coluna 5... o que não tiver a palavra [Ô]dinheiro[Ô] na coluna 4 ele não deve somar.
acho q era só isso.
            então meu grid fica mais ou menos assim:
| CLIENTE | TIPO | VALOR |
| Maria | Dinheiro | 10,00 |
|João | Cartao | 22,00 |
| Raimundo | Dinheiro | 15,00 |
| Ana | Cheque | 50,00 |
então gostaria de mostrar num textbox a soma somente dos dinheiros
txtDinheiro.text = 25,00
ou seja, ele tem que ver na coluna 4 o que é dinheiro e pegar o valor na coluna 5... o que não tiver a palavra [Ô]dinheiro[Ô] na coluna 4 ele não deve somar.
acho q era só isso.
                    Vc ja escreveu o codigo ? Se sim
, mostre ele para tentarmos resolver seu problema...
                
            
, mostre ele para tentarmos resolver seu problema...
                
                    tenho somente o codigo que soma a coluna inteira... eu nao tenho o q faz a filtragem dos dados
                
            
                    veja aà se te ajuda...
TxtVlr_SubTotal.Text = Format(CDbl(TxtVlr_SubTotal.Text) + CDbl(Sgrid.TextMatrix(Sgrid.Rows - 1, 7)), [Ô]###,##0.00[Ô])
nesse meu caso estou somando a coluna 7..
aà é só vc adaptar na sua necessidade...
            TxtVlr_SubTotal.Text = Format(CDbl(TxtVlr_SubTotal.Text) + CDbl(Sgrid.TextMatrix(Sgrid.Rows - 1, 7)), [Ô]###,##0.00[Ô])
nesse meu caso estou somando a coluna 7..
aà é só vc adaptar na sua necessidade...
                    Manda o codigo da coluna inteira que vo fez para eu tentar ver o que pode ser alterado para que se ajuste ao seu caso....
                
            
                    eu uso uma função para somar toda uma coluna no flexgrid:
[ô]função
[ô]usando a função (esse numero 5 é o numero da coluna)
eu tenho tambem um código que mudar a cor da linha baseado no texto que está na coluna 4
entao o que precisava era uniar as duas coisas...
-ver o texto da coluna 4 e somar todos que possuissem o mesmo texto
            [ô]função
Public Function SomaGrid(var_Grid As MSFlexGrid, Col As Integer) As Double
Dim i As Integer, Valor As Double
For i = 0 To var_Grid.Rows - 1
  If IsNumeric(var_Grid.TextMatrix(i, Col)) Then
    Valor = Valor + CDbl(var_Grid.TextMatrix(i, Col))
  End If
Next i
SomaGrid = Valor
End Function[ô]usando a função (esse numero 5 é o numero da coluna)
txtTotalDinheiro.Text = Format(SomaGrid(Grid, 5), [Ô]##,##0.00[Ô])eu tenho tambem um código que mudar a cor da linha baseado no texto que está na coluna 4
For yx = 1 To .Rows - 1
  For xx = 0 To .Cols - 1
    .Col = xx
    .Row = yx
    If .TextMatrix(yx, 4) = [Ô]CARTAO[Ô] Then
        .CellForeColor = &H8000&
        .CellFontBold = True
    ElseIf .TextMatrix(yx, 4) = [Ô]DINHEIRO[Ô] Then
               .CellForeColor = vbBlack
    ElseIf .TextMatrix(yx, 4) = [Ô]SAÃDA[Ô] Then
        .CellForeColor = vbRed
        .CellFontBold = True
    End If
  Next xx
Next yx
End Withentao o que precisava era uniar as duas coisas...
-ver o texto da coluna 4 e somar todos que possuissem o mesmo texto
                    Private Sub Form_Load()
With MSFlexGrid1
.TextMatrix(1, 0) = [Ô]Maria[Ô]
.TextMatrix(2, 0) = [Ô]João[Ô]
.TextMatrix(3, 0) = [Ô]Raimundo[Ô]
.TextMatrix(4, 0) = [Ô]Ana[Ô]
.TextMatrix(1, 1) = [Ô]Dinheiro[Ô]
.TextMatrix(2, 1) = [Ô]Cartão[Ô]
.TextMatrix(3, 1) = [Ô]Dinheiro[Ô]
.TextMatrix(4, 1) = [Ô]Cheque[Ô]
.TextMatrix(1, 2) = 10
.TextMatrix(2, 2) = 22
.TextMatrix(3, 2) = 15
.TextMatrix(4, 2) = 50
End With
somaFlex
End Sub
Private Sub somaFlex()
Dim soma As Currency
Dim i As Integer
On Error GoTo errorhandeler
  
With MSFlexGrid1
For i = 1 To .Rows - 1
        
If .TextMatrix(i, 1) = [Ô]Dinheiro[Ô] And IsNumeric(.TextMatrix(i, 2)) Then
soma = soma + CCur(.TextMatrix(i, 2))
Else
            
End If
                
Next
        
Text1.Text = Format(soma, [Ô]#,##0.00[Ô])
   
End With
errorhandeler:
End Sub
            With MSFlexGrid1
.TextMatrix(1, 0) = [Ô]Maria[Ô]
.TextMatrix(2, 0) = [Ô]João[Ô]
.TextMatrix(3, 0) = [Ô]Raimundo[Ô]
.TextMatrix(4, 0) = [Ô]Ana[Ô]
.TextMatrix(1, 1) = [Ô]Dinheiro[Ô]
.TextMatrix(2, 1) = [Ô]Cartão[Ô]
.TextMatrix(3, 1) = [Ô]Dinheiro[Ô]
.TextMatrix(4, 1) = [Ô]Cheque[Ô]
.TextMatrix(1, 2) = 10
.TextMatrix(2, 2) = 22
.TextMatrix(3, 2) = 15
.TextMatrix(4, 2) = 50
End With
somaFlex
End Sub
Private Sub somaFlex()
Dim soma As Currency
Dim i As Integer
On Error GoTo errorhandeler
With MSFlexGrid1
For i = 1 To .Rows - 1
If .TextMatrix(i, 1) = [Ô]Dinheiro[Ô] And IsNumeric(.TextMatrix(i, 2)) Then
soma = soma + CCur(.TextMatrix(i, 2))
Else
End If
Next
Text1.Text = Format(soma, [Ô]#,##0.00[Ô])
End With
errorhandeler:
End Sub
                        Tópico encerrado , respostas não são mais permitidas