Страницы: 1
RSS
sumif vba, debag при написании формулы sumif
 
Коллеги, добрый день.
при написании sumif выдает ошибку, не могу найти что не так в формуле, уже перепробовала все.

необходимо в определенный столбец (начиная с 6,15) суммировать  деньги по условию фамилии

формула:

Cells(i,15) = Application.WorksheetFuction.SumIf(Sheets(«Фактические начисления»). Range(“Q:Q”), Sheets(«Расчет»).Range (“С:С”),Value, Sheets(“Фактические начисления»). Range(“AJ:AJ”))

где столбец Q = Фамилия из диапазона
столбец C = фамилия по которой ведется поиск
столбец AJ = данные с суммами, которые необходимо найти по условию и просуммировать.
 
Файл-пример с ошибкой приложите
Согласие есть продукт при полном непротивлении сторон
 
Метод WorksheetFunction.SumIf
См. Аргумент2
Цитата
критерии в виде числа, выражения или текста
, а у Вас диапазон
Согласие есть продукт при полном непротивлении сторон
 
поставила в аргумент 2 - значение и сработало!
но как сделать так, чтобы он искал по фамилии и к данной фамилии суммировал с листа данные? список из фамилии растянут на 120 строк  
 
Применить другую формулу. Использовать PQ. Написать макрос. Масса вариантов
Согласие есть продукт при полном непротивлении сторон
 
те в sumif невозможно прописать переменную к которой будет применяться значение? быть такого не может  
 
Разговор пока не о чем
Файл-пример приложите. Как есть - Как надо
Попробую угадать
Код
Cells(i, 15) = Application.WorksheetFuction.SumIf(Sheets("Фактические начисления").Range("Q:Q"), _
              Sheets("Расчет").Cells(i, 3).Value, Sheets("Фактические начисления").Range("AJ:AJ"))
Согласие есть продукт при полном непротивлении сторон
 
Если уже применяете макрос, так удобнее и быстрее без формул листа в словаре суммировать. Если не мак конечно, но у там есть выход через коллекцию аналог сделать.
 
расчет для макроса — копия.xlsx

вырезка из файла, на котором я пишу макрос.
Проблема, скорее всего во второй переменной,

одна переменная у меня уже задействована в самом начале,
а вторую переменную не понимаю как ввести, чтобы все корректно работало (
 
Worksheets ("Данные для расчета"). Activate
b = Cells (Rows.Count, 1). End (x1Up).Row

Worksheets ("Расчет"). Activate

n  = Cells (Rows.Count, 1). End (x1Up).Row

For i = 6 To n

Cells(i, 15) = Application.WorksheetFuction.SumIf(Sheets("Данные для расчета").Range("O:O"), _
             Sheets("Расчет").Cells(i, 3).Value, Sheets("Данные для расчета").Range("AG:AG"))
 
Что нужно высчитать, по каким параметрам, где код в котором не получается?
 
прописала выше
 
ignatova,  как вариант для винды. Диапазоны для массивов и обработки можно указывать как угодно, можно как у Вас в коде, только не путайте l и 1 ))

Код
Option Explicit

Sub tt()
Dim a, b, i&

With Worksheets("Данные для расчета")
a = .UsedRange.Columns(15).Value
b = .UsedRange.Columns(33).Value
End With

With CreateObject("Scripting.Dictionary")
For i = 2 To UBound(a)
.Item(a(i, 1)) = .Item(a(i, 1)) + b(i, 1)
Next

With Worksheets("расчет")
a = .UsedRange.Columns(3).Value
b = .UsedRange.Columns(15).Value
End With

For i = 2 To UBound(a)
b(i, 1) = .Item(a(i, 1))
Next

Worksheets("расчет").UsedRange.Columns(15).Value = b
End With

End Sub
Изменено: Hugo - 08.07.2024 16:03:37
 
так как макрос и так большой,
то что я прислала это  маленькая часть, не хотелось бы его перегружать еще больше,
поэтому хотелось бы просто скорректировать свой и ввести вторую переменную, но пока у меня это не выходит
 
Цитата
ignatova написал:
но пока у меня это не выходит
- вообще если убрать опечатки (3 штуки) то всё работает. Медленно и неоптимально.
Откуда этот код? Прямо сюда набирали?
 
(x1Up)
(x1Up)
WorksheetFuction
 
да, с рабочего удаленного стола не могу перенестись, пришлось в руку,

оттуда и ошибки,
но он мне не суммирует ячейки по номеру или фамилии, грубо говоря, он мне во все ячейки заводит значение 0, а не сумму по диапазону суммирования :(
 
Цитата
ignatova написал:
но он мне не суммирует
- а у меня на том файле суммирует. Файл выше.
Может у Вас и там такие же описки? ((
Изменено: Hugo - 08.07.2024 19:01:18
Страницы: 1
Наверх