Добрый день! Как дополнить код так, что бы в случае если в столбце 4 таблицы находится плюс, то к найденному через пробел добавлялось содержимое столбца 5, а если минус, то шестого.
Добрый день! Как дополнить код так, что бы в случае если в столбце 4 таблицы находится плюс, то к найденному через пробел добавлялось содержимое столбца 5, а если минус, то шестого.AVI
[/vba] Целиком код с парой комментариев (это вроде я писал когда-то где-то, да?) [vba]
Код
Sub qqq() Dim ar0, n0_, r0_, r1_, ar1, i, n1, n1_, z_ ar0 = Range("Расчет") n0_ = UBound(ar0) With Worksheets("Лист1") z_ = .Range("D2").Value r0_ = 6 r1_ = .Cells(Rows.Count, 4).End(3).Row If r1_ >= r0_ Then .Cells(r0_, 4).Resize(r1_ - r0_ + 1, 10).ClearContents End If ar1 = .Cells(r0_, 4).Resize(n0_) 'зачем 10 столбцов было? For i = 1 To n0_ If ar0(i, 2) = z_ Then 'не нужно каждый раз обращаться к ячейке, вынес в переменную z_ n1_ = n1_ + 1 ar1(n1_, 1) = ar0(i, 3) & ", " & Format(ar0(i, 6 + (ar0(i, 4) = "-")), "0.0") End If Next i .Cells(r0_, 4).Resize(n1_) = ar1 End With End Sub
[/vba] Целиком код с парой комментариев (это вроде я писал когда-то где-то, да?) [vba]
Код
Sub qqq() Dim ar0, n0_, r0_, r1_, ar1, i, n1, n1_, z_ ar0 = Range("Расчет") n0_ = UBound(ar0) With Worksheets("Лист1") z_ = .Range("D2").Value r0_ = 6 r1_ = .Cells(Rows.Count, 4).End(3).Row If r1_ >= r0_ Then .Cells(r0_, 4).Resize(r1_ - r0_ + 1, 10).ClearContents End If ar1 = .Cells(r0_, 4).Resize(n0_) 'зачем 10 столбцов было? For i = 1 To n0_ If ar0(i, 2) = z_ Then 'не нужно каждый раз обращаться к ячейке, вынес в переменную z_ n1_ = n1_ + 1 ar1(n1_, 1) = ar0(i, 3) & ", " & Format(ar0(i, 6 + (ar0(i, 4) = "-")), "0.0") End If Next i .Cells(r0_, 4).Resize(n1_) = ar1 End With End Sub
Да ладно! Тут и без меня немерено красоты на форуме Второй файл [vba]
Код
Sub qqq() ar0 = Range("Расчет") n0_ = UBound(ar0) With Worksheets("Лист1") z1_ = .Range("E2").Value z2_ = CDate(.Range("F2").Value) z3_ = CDate(.Range("G2").Value) r0_ = 6 r1_ = .Cells(Rows.Count, 4).End(3).Row If r1_ >= r0_ Then .Cells(r0_, 4).Resize(r1_ - r0_ + 1, 10).ClearContents End If ar1 = .Cells(r0_, 4).Resize(n0_) For i = 1 To n0_ If ar0(i, 16) = z1_ Then If ar0(i, 1) >= z2_ Then If ar0(i, 1) <= z3_ Then If ar0(i, 12) > 0 Then x_ = "" If ar0(i, 25) = "Платные" Then x_ = ", " & ar0(i, 6) End If n1_ = n1_ + 1 ar1(n1_, 1) = ar0(i, 3) & x_ End If End If End If End If Next i .Cells(r0_, 4).Resize(n1_) = ar1 End With End Sub
[/vba]
Да ладно! Тут и без меня немерено красоты на форуме Второй файл [vba]
Код
Sub qqq() ar0 = Range("Расчет") n0_ = UBound(ar0) With Worksheets("Лист1") z1_ = .Range("E2").Value z2_ = CDate(.Range("F2").Value) z3_ = CDate(.Range("G2").Value) r0_ = 6 r1_ = .Cells(Rows.Count, 4).End(3).Row If r1_ >= r0_ Then .Cells(r0_, 4).Resize(r1_ - r0_ + 1, 10).ClearContents End If ar1 = .Cells(r0_, 4).Resize(n0_) For i = 1 To n0_ If ar0(i, 16) = z1_ Then If ar0(i, 1) >= z2_ Then If ar0(i, 1) <= z3_ Then If ar0(i, 12) > 0 Then x_ = "" If ar0(i, 25) = "Платные" Then x_ = ", " & ar0(i, 6) End If n1_ = n1_ + 1 ar1(n1_, 1) = ar0(i, 3) & x_ End If End If End If End If Next i .Cells(r0_, 4).Resize(n1_) = ar1 End With End Sub