Страницы: 1
RSS
макрос: суммирования строк по названию столбца, макрос: суммирования строк по названию столбца
 
добрый вечер,

прошу помочь написать макрос, который автомотически высчитывает сумму в столбце "result" (пример приложила) по имени колонки. Например макрос должен высчитать сумму по  строчкам apple и pineapple и показать не просто результат суммы, а формулу суммы. Как показано в примере столбец result Так чтобы пользователь мог изменять значение и сумма атомотически пересчитывалась. Колонки apple и pineapple могут быть в разных местах, то есть не всегда на первом и третьем месте.

благодарю за помощь.
 
Цитата
Екатерина написал:
помочь
или все таки написать за Вас?(в файле нет попыток..) и пример максимально приближен к реальному по структуре?
Изменено: Mershik - 24.05.2021 20:26:35
Не бойтесь совершенства. Вам его не достичь.
 
Цитата
или все таки написать за Вас?
Код
Sub iSymma()
Dim i As Long
Dim iLastRow As Long
Dim Col1 As Integer
Dim Col2 As Integer
   Col1 = Rows(1).Find("Apple", , xlValues, xlWhole).Column
   Col2 = Rows(1).Find("Pineapple", , xlValues, xlWhole).Column
 iLastRow = Cells(Rows.Count, 1).End(xlUp).Row
   Range("E2:E" & iLastRow).ClearContents
  For i = 2 To iLastRow
    Cells(i, 5) = Cells(i, Col1) + Cells(i, Col2)
  Next
End Sub
 
Kuzmich, только кажется еще нужно
Цитата
Екатерина написал:
показать не просто результат суммы, а формулу суммы.
Код
Sub Ìàêðîñ1()
Dim lcol As Long, i As Long, tt As String
lcol = Cells(1, Columns.Count).End(xlToLeft).Column - 1
tt = ""
For i = 1 To lcol
    If Cells(1, i) = "Apple" Or Cells(1, i) = "Pineapple" Then
        If tt = "" Then
            tt = "=" & Cells(2, i).Address(RowAbsolute:=False, ColumnAbsolute:=False)
        Else
            tt = tt & "+" & Cells(2, i).Address(RowAbsolute:=False, ColumnAbsolute:=False)
        End If
    End If
Next i
    Cells(2, lcol + 1).FormulaLocal = tt
    Cells(2, lcol + 1).AutoFill Destination:=Range(Cells(2, lcol + 1), Cells(Cells(Rows.Count, 1).End(xlUp).Row, lcol + 1))
End Sub
Изменено: Mershik - 24.05.2021 20:43:51
Не бойтесь совершенства. Вам его не достичь.
 
Цитата
Екатерина написал:
написать макрос,
Но у вас в примере прописана формула. Может и формулы достаточно и не нужен макрос?
Код
=СУММЕСЛИ($A$1:$D$1;"Apple";A2:D2)+СУММЕСЛИ($A$1:$D$1;"Pineapple";A2:D2)
или
=СУММ(ИНДЕКС(A2:D2;ПОИСКПОЗ("Apple";$A$1:$D$1;));ИНДЕКС(A2:D2;ПОИСКПОЗ("Pineapple";$A$1:$D$1;)))
 
спасибо  большое за ответы!

с уважением,
Изменено: Екатерина - 24.05.2021 22:01:27
 
Код
Sub iSymma()
Dim i As Long
Dim iLastRow As Long
Dim Col1 As Integer
Dim Col2 As Integer
Dim Col3 As Integer
   Col1 = Rows(1).Find("Apple", , xlValues, xlWhole).Column
   Col2 = Rows(1).Find("Pineapple", , xlValues, xlWhole).Column
   Col3 = Rows(1).Find("result", , xlValues, xlWhole).Column
 iLastRow = Cells(Rows.Count, 1).End(xlUp).Row
   Range(Cells(2, Col3), Cells(iLastRow, Col3 + 1)).ClearContents
  For i = 2 To iLastRow
    Cells(i, Col3).Formula = Cells(i, Col1).Address(0, 0) & "+" & Cells(i, Col2).Address(0, 0) & " ="
    Cells(i, Col3 + 1) = Cells(i, Col1) + Cells(i, Col2)
  Next
End Sub

Формула в столбце result, сама сумма правее
Изменено: Kuzmich - 24.05.2021 22:05:17
Страницы: 1
Наверх