Função para somar números no Excel

0

Eu quero somar cada número na coluna A com cada um na coluna de acordo com a regra a seguir para obter o número na coluna C.

Regra:

  • O primeiro número em A mais o último número na coluna B para obter o primeiro número na coluna C

  • O segundo número em A mais o segundo último número em B para obter o segundo número em C

  • E assim por diante

Alguém poderia me ajudar a escrever a função para fazer isso?

O que posso fazer é escrever manualmente uma função para cada soma, por exemplo, A1 + B5, A2 + B4, ...

No entanto, não é isso que eu quero. Eu quero algo que possa se aplicar a todos.

Obrigado.

    
por anhnha 24.09.2016 / 19:28

3 respostas

2

Vamos dividir isso em dois problemas. Um está fazendo as contas que você descreve. O outro é automatizar os parâmetros. Fazer as contas é fácil se você especificar o número e a localização das linhas. Fica complicado se você quiser uma fórmula genérica que inclua a determinação desses parâmetros.

Então, vamos supor que sua matriz comece na A1. Colocaremos a contagem de linhas, 5 neste caso, em D1. E para simplificar, vamos ignorar o tratamento de espaços em branco e outras complicações. Suponha que você tenha um bloco de dados preparado corretamente e copie manualmente a fórmula na coluna C exatamente onde precisa.

Você pode usar essa fórmula em C1 e copiá-la para as outras células:

=A1+INDIRECT("B"&$D$1+1-ROW())

A função INDIRECT cria uma referência de célula a partir do texto e da matemática.

Outro método seria usar a função INDEX:

=A1+INDEX(B$1:B$5,$D$1+1-ROW(),1)

Isso codifica o intervalo de dados na fórmula, o que pode não ser desejável. INDEX retorna o valor do intervalo especificado, dada uma linha e coluna em relação ao intervalo.

    
por 24.09.2016 / 20:36
1

Não sei se você também quer fazer isso com macros, mas aqui está um exemplo com uma macro.

Sub Macro1()

    Range("B1").Select
    Selection.End(xlDown).Select

    Dim num1 As Integer, num2 As Integer, counter As Integer, amountOfRows As Integer
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1")

    amountOfRows = ws.Range("B1", ws.Range("B1").End(xlDown)).Rows.Count

    num1 = Range("A1").Value
    num2 = ActiveCell.Value

       For counter = 1 To amountOfRows

          Cells(counter, 3) = num1 + num2

            If counter = 5 Then
            Exit Sub
            End If

          num1 = Range("A1").Offset(0 + counter, 0).Value
          num2 = ActiveCell.Offset(-counter, 0).Value


        Next

End Sub
    
por 24.09.2016 / 20:44
1

Entrando no VBA Editor para escrever uma macro

Dependendo da versão do VBA, você pode usar este link para descobrir como adicionar o VBA macro no excel.

Alternativamente, você pode usar o atalho ALT + F11 para abrir o editor do VBA - clique com o botão direito na Folha 1 (Folha1) e selecione Insert Module

Macro para sua necessidade - adição cruzada

Você pode usar a macro a seguir para fazer sua cross_addtion, conforme demonstrado pela sua foto.

Sub cross_addition()
' find out the last cell in a series
a = Range("A" & Cells(Rows.Count, "A").End(xlUp).Row)
For i = 1 To a
    For j = a To 1 Step -1
        k = Cells(i, 1).Value + Cells(j, 2).Value
        Cells(i, 3) = k
        i = i + 1
    Next j
Next i
End Sub  

A macro pressupõe que os dados que você deseja adicionar estão nas colunas A e B e na coluna C seriam a coluna de saída. Então, por favor modifique o código conforme suas necessidades.

    
por 24.09.2016 / 21:15