При срабатывании кода, запятая ставится в конце списка в ячейке.
[vba]
Код
Sub www() Dim s&, i&, n s = 2 n = Cells(2, "C") lr = Cells(Rows.Count, 1).End(xlUp).Row For i = 2 To lr If Cells(i, "C") = n Then Cells(s, "H") = Cells(i, "A") Cells(s, "I") = Cells(s, "I") & Cells(i, "B") & ", " Cells(s, "J") = Cells(i, "C") Cells(s, "K") = Cells(s, "K") + Cells(i, "D") Cells(s, "L") = Cells(s, "L") + Cells(i, "E") Cells(s, "M") = Cells(s, "M") + Cells(i, "F") Else n = Cells(i, "C") s = s + 1 i = i - 1 End If Next Range("A:G").Delete Shift:=xlToLeft End Sub
[/vba] Как этого избежать?
Всем еще раз добрый вечер!
При срабатывании кода, запятая ставится в конце списка в ячейке.
[vba]
Код
Sub www() Dim s&, i&, n s = 2 n = Cells(2, "C") lr = Cells(Rows.Count, 1).End(xlUp).Row For i = 2 To lr If Cells(i, "C") = n Then Cells(s, "H") = Cells(i, "A") Cells(s, "I") = Cells(s, "I") & Cells(i, "B") & ", " Cells(s, "J") = Cells(i, "C") Cells(s, "K") = Cells(s, "K") + Cells(i, "D") Cells(s, "L") = Cells(s, "L") + Cells(i, "E") Cells(s, "M") = Cells(s, "M") + Cells(i, "F") Else n = Cells(i, "C") s = s + 1 i = i - 1 End If Next Range("A:G").Delete Shift:=xlToLeft End Sub
Пробую использовать с текстом. Догадываюсь, что переменные, возможно, нужно обозначать, как текстовые, обозначал, но не уверен, что делаю то, что нужно. [vba]
Код
Sub qqqr() Dim s&, i&, n Dim A&, B$, C&, D#, E#, F# s = 2 n = Cells(2, "C") ps = Range("A" & Rows.Count).End(xlUp).Row + 1 Application.ScreenUpdating = False For i = 2 To ps If Cells(i, "C") <> n Then Cells(s, "A") = A Cells(s, "C") = C Cells(s, "D") = D Cells(s, "E") = E Cells(s, "F") = F B = Left$(B, Len(B) - 2) If Len(B) > Columns("B:B").ColumnWidth Then Columns("B:B").ColumnWidth = Len(B) - 3 Cells(s, "B") = B A = 0: B = "": C = 0: D = 0: E = 0: F = 0 n = Cells(i, "C") s = s + 1 i = i - 1 Else A = Cells(i, "A") B = B & Cells(i, "B") & ", " C = Cells(i, "C") D = Cells(i, "D") E = Cells(i, "E") F = F + Cells(i, "F") End If Next Range(Cells(s, "A"), Cells(ps, "F")).ClearContents Application.ScreenUpdating = True End Sub
[/vba] Как воспроизвести ту же логику, только с текстовыми значениями?
Пробую использовать с текстом. Догадываюсь, что переменные, возможно, нужно обозначать, как текстовые, обозначал, но не уверен, что делаю то, что нужно. [vba]
Код
Sub qqqr() Dim s&, i&, n Dim A&, B$, C&, D#, E#, F# s = 2 n = Cells(2, "C") ps = Range("A" & Rows.Count).End(xlUp).Row + 1 Application.ScreenUpdating = False For i = 2 To ps If Cells(i, "C") <> n Then Cells(s, "A") = A Cells(s, "C") = C Cells(s, "D") = D Cells(s, "E") = E Cells(s, "F") = F B = Left$(B, Len(B) - 2) If Len(B) > Columns("B:B").ColumnWidth Then Columns("B:B").ColumnWidth = Len(B) - 3 Cells(s, "B") = B A = 0: B = "": C = 0: D = 0: E = 0: F = 0 n = Cells(i, "C") s = s + 1 i = i - 1 Else A = Cells(i, "A") B = B & Cells(i, "B") & ", " C = Cells(i, "C") D = Cells(i, "D") E = Cells(i, "E") F = F + Cells(i, "F") End If Next Range(Cells(s, "A"), Cells(ps, "F")).ClearContents Application.ScreenUpdating = True End Sub
[/vba] Как воспроизвести ту же логику, только с текстовыми значениями?ant6729
Спасибо, Васильевич! Из кода я немного уловил логику решения задания. Надеюсь, в следующий раз смогу увидеть ситуацию на Листе по аналогии с данным кодом. Надеюсь...)
Спасибо, Васильевич! Из кода я немного уловил логику решения задания. Надеюсь, в следующий раз смогу увидеть ситуацию на Листе по аналогии с данным кодом. Надеюсь...)ant6729