Уважаемые. Хочется услышать от Вас идеи, как можно организовать следующее
В прикрепленном файле.
имеются синие строки и красные столбцы В синих строках, начиная со второй ячейки (1ая ячейка каждой синей строки это будет порядковый номер и его никак задейстовать не надо) будет вбиваться ширина В красных столбцах будут вбиваться высота. На пересечениях высоты и ширины вбиваются буквенные значения (они разные), площадь которых нужно посчитать.
Подробнее: происходит просчет площади на пересечении каждого столбца и строки. Затем происходит поиск сходных буквенно-циферных названий и суммируется их площади. на скриншоте, как пример, я выделил один тип одинаковых ячеек желтым цветом. Перемножаются сначала значения 1ого порядкового номера строки (отметил красным номер), потом 2ого (отметил синим).
Про порядковые номера. Между порядковыми номерами специально сделано расстояние в 10 строк ( т.е. между первой и второй строкой где имеются порядковые номер - расстояние в 9 строк, а далее строки идут через 10 (т.е. 10, 20, 30, 40, и тд...) Так устроена программа расчета. Соответственно, все ширины будут располагаться именно через данный промежуток.
Получается, сначала происходит расчет и суммирование площадей одинаковых типов на отрезке B2:E4, затем в B11:E13. После чего каждый отдельный тип суммируется. А сумма каждого типа ( С, 2С, 2СЖ, П) выводится на Листе 2: С=, 2С=, 2СЖ=, П=.
Уважаемые. Хочется услышать от Вас идеи, как можно организовать следующее
В прикрепленном файле.
имеются синие строки и красные столбцы В синих строках, начиная со второй ячейки (1ая ячейка каждой синей строки это будет порядковый номер и его никак задейстовать не надо) будет вбиваться ширина В красных столбцах будут вбиваться высота. На пересечениях высоты и ширины вбиваются буквенные значения (они разные), площадь которых нужно посчитать.
Подробнее: происходит просчет площади на пересечении каждого столбца и строки. Затем происходит поиск сходных буквенно-циферных названий и суммируется их площади. на скриншоте, как пример, я выделил один тип одинаковых ячеек желтым цветом. Перемножаются сначала значения 1ого порядкового номера строки (отметил красным номер), потом 2ого (отметил синим).
Про порядковые номера. Между порядковыми номерами специально сделано расстояние в 10 строк ( т.е. между первой и второй строкой где имеются порядковые номер - расстояние в 9 строк, а далее строки идут через 10 (т.е. 10, 20, 30, 40, и тд...) Так устроена программа расчета. Соответственно, все ширины будут располагаться именно через данный промежуток.
Получается, сначала происходит расчет и суммирование площадей одинаковых типов на отрезке B2:E4, затем в B11:E13. После чего каждый отдельный тип суммируется. А сумма каждого типа ( С, 2С, 2СЖ, П) выводится на Листе 2: С=, 2С=, 2СЖ=, П=.nifra
Sub ertert() Dim x, i&, j&, k&, s$, pl# x = Range("A1:P69").Value With Sheets("Лист2") .Range("A2:B" & .Cells(Rows.Count, 1).End(xlUp).Row + 1).ClearContents End With With CreateObject("Scripting.Dictionary") .CompareMode = 1 For i = 1 To UBound(x, 1) For j = 1 To UBound(x, 2) If Not IsNumeric(x(i, j)) Then s = Trim(x(i, j)): k = (i \ 10) * 10 - (i < 10) pl = x(i, 1) * x(k, j) If .Exists(s) Then .Item(s) = .Item(s) + pl Else .Item(s) = pl End If Next j Next i Sheets("Лист2").Range("A2").Resize(.Count).Value = WorksheetFunction.Transpose(.keys) Sheets("Лист2").Range("B2").Resize(.Count).Value = WorksheetFunction.Transpose(.items) End With Sheets("Лист2").Activate End Sub
[/vba]
Quote (nifra)
...как можно организовать следующее
Например, с помощью зеленой стрелочки [vba]
Code
Sub ertert() Dim x, i&, j&, k&, s$, pl# x = Range("A1:P69").Value With Sheets("Лист2") .Range("A2:B" & .Cells(Rows.Count, 1).End(xlUp).Row + 1).ClearContents End With With CreateObject("Scripting.Dictionary") .CompareMode = 1 For i = 1 To UBound(x, 1) For j = 1 To UBound(x, 2) If Not IsNumeric(x(i, j)) Then s = Trim(x(i, j)): k = (i \ 10) * 10 - (i < 10) pl = x(i, 1) * x(k, j) If .Exists(s) Then .Item(s) = .Item(s) + pl Else .Item(s) = pl End If Next j Next i Sheets("Лист2").Range("A2").Resize(.Count).Value = WorksheetFunction.Transpose(.keys) Sheets("Лист2").Range("B2").Resize(.Count).Value = WorksheetFunction.Transpose(.items) End With Sheets("Лист2").Activate End Sub