mitya528, в таком случае, советую разобраться с этим (добавил 1) и дальше собираться по кусочкам:
Код
Sub aaa()
lLastRow = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row
For n = 4 To lLastRow
On Error Resume Next
ActiveSheet.Range("P" & n) = Round(Application.AverageIfs(ActiveSheet.Range("C" & n & ":O" & n), ActiveSheet.Range("C" & n & ":O" & n), ">0"), 1)
ActiveSheet.Range("R" & n) = Sheets("Лист2").Range("Y" & n) + Sheets("Лист2").Range("AB" & n)
Next
End Sub
mitya528, В чем цель замены формул на значения? Они долго обновляются? Вы представляете, сколько всего хотите сделать чужими руками просто так?
для самого простого примера:
Код
Sub aaa()
lLastRow = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row
For n = 4 To lLastRow
ActiveSheet.Range("R" & n) = Sheets("Лист2").Range("Y" & n) + Sheets("Лист2").Range("AB" & n)
Next
End Sub
Счастливчик, в целом все просто: 1) Если задача разовая, то не стоит сильно заморачиваться по скорости (в разумных пределах). Такие задачи у меня сейчас часто появляются в связи с локализацией различных штук в компании 2) Если задача постоянная, то однозначно стоит бороться за скорость, но тоже нужно понимать, кто пишет код, т.к. трудозатраты могут быть не рациональными для этого.
deviceik, можно сделать с помощью 3D Maps вообще без трудов или с Вашей картинкой на диаграмме, но подбирая каждое местоположение вручную. Думаю, что сами понимаете за какой из вариантов коллеги возьмут гораздо больше.
eshot1, а у меня в 365 все ок))) upd: можете нажать "отобразить все знаки" или ctrl+*? после этого выделяем весь тест ctrl+a, нажимаем ПКМ, выбираем шрифт, убираем галку "скрытый"
Как учесть ежегодный плавающий период отпуска через формулу, При составлении ежедневного расписания на несколько лет необходимо учесть плавающий период отпуска через формулу
Как учесть ежегодный плавающий период отпуска через формулу, При составлении ежедневного расписания на несколько лет необходимо учесть плавающий период отпуска через формулу
Sub aaaaaaaabbb()
Dim arr()
Dim i As Long
Dim q As Variant
Dim matchFound As Boolean
Dim numColumns As Long
lLastRowA = Sheets("A").Cells(Rows.Count, 1).End(xlUp).Row
lLastRowB = Sheets("B").Cells(Rows.Count, 1).End(xlUp).Row
Set rngA = Sheets("A").Range("A2:C" & lLastRowA)
Set rngB = Sheets("B").Range("A2:C" & lLastRowB)
numColumns = rngA.Columns.Count
ReDim arr(1 To lLastRowA, 1 To numColumns)
For rA = 1 To rngA.Rows.Count
matchFound = False
For rB = 1 To rngB.Rows.Count
If rngA(rA, 1) = q Then
Exit For
End If
If rngA(rA, 1) = rngB(rB, 1) Then
If rngA(rA, 3) - rngB(rB, 2) > 0 Then
q = rngA(rA, 1)
Exit For
End If
matchFound = True
Exit For
End If
Next rB
If Not matchFound Then
i = i + 1
For j = 1 To numColumns
arr(i, j) = rngA(rA, j)
Next j
End If
Next rA
Sheets("A").Range("A2:C" & lLastRowA).ClearContents
Sheets("A").Range("A2").Resize(i, 3).Value = arr
End Sub
delph3r написал: листа "Последняя таблица" со всеми предыдущими листами?
активного листа, со всеми другими
Цитата
delph3r написал: А сильно сложнее будет, если Результат будет выдаваться только тогда, когда все строки колонки B из листа "Последняя таблица" совпадают со всеми строками колонки