none
Multiplicar pelo próximo resultado da pesquisa RRS feed

  • Pergunta

  • Boa noite Pessoal,

    Tenho esses dados A e B e tenho outros na coluna F. Eu preciso multiplicar todas as linhas da A pelos valores correspondentes da F. Montei um código, mas estou com problemas .FindNext. Não consigo fazer ele multiplicar o valor da próxima pesquisa.

    Alguém me ajuda ?

    Aluno Professores
    12,000 2,000
    3,000 4,000
    4,000 5,000
    5,000 6,000
    1,089 7,000
    1,177 0,000
    1,236 1,236
     

    Dados da Coluna F

    Professores 9
    Alunos 485
    Alunos 8
    Professores 77
    Alunos 5
    Professores 5
    Alunos 666
    Alunos 1498

    Código:

    Sub aaateste()

    I = 5 'Linha
    X = 14 'Coluna
    Z = 10 'total do while
    f = 1 'contador

    pp = 5 'valor da linha

    Worksheets("ÍNDICES").Activate
        Range("T" & pp).Value = Cells(I, X) * Cells.Find(What:="Alunos").Offset(0, 1)
    p = pp + 1

    'a partir daqui devemos multiplicar pelo próximo resultado da pesquisa
    Do While f <= Z
        Worksheets("ÍNDICES").Activate
        Range("T" & pp).Value = Cells(I, X) * Cells.Find(What:="Alunos").Offset(0, 1) 'MULTIPLICAR PELO PRÓXIMO RESULTADO
    Loop

    pp = pp + 1
    I = I + 1
    f = 1 + 1 'contando
    End Sub

     

    Valeu!

     

     

     

    domingo, 2 de janeiro de 2011 22:34

Respostas

  • COL A

    COL B

    Alunos

    Professores

    12

    2

    3

    4

    4

    5

    5

    6

    1,089

    7

    1,177

    0

    1,236

    1,236

     

    COL F

    COL G

    Professores

    9

    Alunos

    485

    Alunos

    8

    Professores

    77

    Alunos

    5

    Professores

    5

    Alunos

    666

    Alunos

    1498

     

    Código:

    Sub GeraResumo()

       

        Dim wsOrigem As Worksheet

        Dim ws As Worksheet

        Dim l As Long, l2 As Long

        Dim i As Long, j As Long

        Dim n As Long

       

        Set wsOrigem = ActiveSheet

        Set ws = Sheets.Add

       

        With wsOrigem

            For j = 1 To 2

                ws.Cells(1, j * 3) = .Cells(1, j)

                i = 2

                l = 2

                l2 = 1

                Do

                    ws.Cells(l, j * 3) = .Cells(i, j)

                    n = 1

                    Do

                        If .Cells(n, "F") = .Cells(1, j) Then

                            l2 = l2 + 1

                            ws.Cells(l2, j * 3 + 1) = .Cells(n, "G")

                        End If

                        n = n + 1

                    Loop While .Cells(n, "F") <> vbNullString

                    ws.Range( _

                      ws.Cells(l, j * 3), _

                      ws.Cells(l2, j * 3)) = ws.Cells(l, j * 3)

                    i = i + 1

                    l = l2 + 1

                Loop While .Cells(i, j) > 0

                ws.Range( _

                  ws.Cells(2, j * 3 + 2), _

                  ws.Cells(l2, j * 3 + 2)).Formula = "=RC[-2]*RC[-1]"

            Next j

        End With

       

    End Sub


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br
    terça-feira, 11 de janeiro de 2011 21:25
    Moderador

Todas as Respostas

  • Não seria melhor, numa coluna, escrever a fórmula

    =A2*F2

    e arrastá-la até o fim da lista?


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br
    segunda-feira, 3 de janeiro de 2011 00:29
    Moderador
  • Benzadeus, parece que o colega vitorsimei precisa que os valores da Coluna A (que são de Alunos) sejam multiplicados apenas pelos linhas na Coluna F que também são Alunos.

    É isso vitorsimei ? Eu não consigo fazer... 

    terça-feira, 11 de janeiro de 2011 10:16
  •    Teria como salvar a coluna A em um vetor e a coluna F em outro. Depois criar um vetor multiplicação em que cada termo é a multiplicação dos outros dois realizada dentro de um for i = 0 to alguma_coisa vetmult(i) = vetA(i)*vetF(i)?
    terça-feira, 11 de janeiro de 2011 15:18
  • É isso mesmo que o John.law disse, preciso multiplicar cada valor da coluna A pelo valor correspondente nas linhas da Coluna G. Tipo o número 12,000 deveria ser multiplicado pelo 485, pelo 8, pelo 5, pelo 666 e pelo 1498. Depois os valores na Coluna A (Professores) deveriam ser multiplicados pelos seus valores correspondentes na coluna G. 

     

    Alguém consegue me ajudar ? Eu montei aquele código acima, mas ele não multiplica pelo próximo resultado da pesquisa...

    terça-feira, 11 de janeiro de 2011 19:31
  • COL A

    COL B

    Alunos

    Professores

    12

    2

    3

    4

    4

    5

    5

    6

    1,089

    7

    1,177

    0

    1,236

    1,236

     

    COL F

    COL G

    Professores

    9

    Alunos

    485

    Alunos

    8

    Professores

    77

    Alunos

    5

    Professores

    5

    Alunos

    666

    Alunos

    1498

     

    Código:

    Sub GeraResumo()

       

        Dim wsOrigem As Worksheet

        Dim ws As Worksheet

        Dim l As Long, l2 As Long

        Dim i As Long, j As Long

        Dim n As Long

       

        Set wsOrigem = ActiveSheet

        Set ws = Sheets.Add

       

        With wsOrigem

            For j = 1 To 2

                ws.Cells(1, j * 3) = .Cells(1, j)

                i = 2

                l = 2

                l2 = 1

                Do

                    ws.Cells(l, j * 3) = .Cells(i, j)

                    n = 1

                    Do

                        If .Cells(n, "F") = .Cells(1, j) Then

                            l2 = l2 + 1

                            ws.Cells(l2, j * 3 + 1) = .Cells(n, "G")

                        End If

                        n = n + 1

                    Loop While .Cells(n, "F") <> vbNullString

                    ws.Range( _

                      ws.Cells(l, j * 3), _

                      ws.Cells(l2, j * 3)) = ws.Cells(l, j * 3)

                    i = i + 1

                    l = l2 + 1

                Loop While .Cells(i, j) > 0

                ws.Range( _

                  ws.Cells(2, j * 3 + 2), _

                  ws.Cells(l2, j * 3 + 2)).Formula = "=RC[-2]*RC[-1]"

            Next j

        End With

       

    End Sub


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br
    terça-feira, 11 de janeiro de 2011 21:25
    Moderador