Dim MyCollection As Collection Dim Rng As Range Dim Cell As Range Dim vNum As Variant Dim i&
lr = Sheets("Proc2").Range("A" & Rows.Count).End(xlUp).Row
For i = 8 To lr Set Rng = Sheets("Proc2").Range("A8:A" & lr) Set MyCollection = New Collection On Error Resume Next For Each Cell In Rng.Cells MyCollection.Add Cell.Value, CStr(Cell.Value) Next Cell Next i On Error GoTo 0
For Each vNum In MyCollection For x = 8 To lr If vNum = Sheets("Proc2").Cells(x, 1) Then counter = counter + Sheets("Proc2").Cells(x, 6)
MsgBox counter End If Next x
Next vNum
Exit Sub
End Sub
[/vba]
Хочу, чтобы вывелось последовательно по каждому vNum сумма по шестому столбцу
С помощью Target по даблклик можно последовательно получить информацию по каждому значению, но для этого нужно все прокликать
[vba]
Код
lr = Sheets("Proc2").Cells(Rows.Count, 1).End(xlUp).Row SelRow = Target.Row Produce = Sheets("Proc2").Cells(SelRow, 1) For x = 8 To lr If Sheets("Proc2").Cells(x, 1) = Produce Then counter = counter + Sheets("Proc2").Cells(x, 6) Counter2 = Counter2 + Sheets("Proc2").Cells(x, 7) Counter3 = Counter3 + 1 End If Next x w = Math.Round(counter, 2) V = Math.Round(Counter2, 2) sd = Counter3 On Error Resume Next сs = Application.WorksheetFunction.VLookup(Target, Sheets("N15").Range("H2:I1000"), 2, False) MsgBox "[" & w & "]" & " " & "[" & V & "]" & " " & "[" & sd & "]" & vbCrLf & vbCrLf & сs
[/vba]
А я на первом этапе хочу, чтобы VBA сам вывел по уникальному номеру из коллекции суммы по каждому уникальному значению последовательно... в несколько месседжбоксов
Прошу помочь с первым этапом, как скрестить значения коллекции с counter'om
Может, решение лежит через другие подходы, хотел бы посмотреть и другие направления решения.
Добрый вечер, не могу распотрошить задачу
Вот мой код...
[vba]
Код
Sub A56U()
Dim Msg As String Dim Response As Long
Dim MyCollection As Collection Dim Rng As Range Dim Cell As Range Dim vNum As Variant Dim i&
lr = Sheets("Proc2").Range("A" & Rows.Count).End(xlUp).Row
For i = 8 To lr Set Rng = Sheets("Proc2").Range("A8:A" & lr) Set MyCollection = New Collection On Error Resume Next For Each Cell In Rng.Cells MyCollection.Add Cell.Value, CStr(Cell.Value) Next Cell Next i On Error GoTo 0
For Each vNum In MyCollection For x = 8 To lr If vNum = Sheets("Proc2").Cells(x, 1) Then counter = counter + Sheets("Proc2").Cells(x, 6)
MsgBox counter End If Next x
Next vNum
Exit Sub
End Sub
[/vba]
Хочу, чтобы вывелось последовательно по каждому vNum сумма по шестому столбцу
С помощью Target по даблклик можно последовательно получить информацию по каждому значению, но для этого нужно все прокликать
[vba]
Код
lr = Sheets("Proc2").Cells(Rows.Count, 1).End(xlUp).Row SelRow = Target.Row Produce = Sheets("Proc2").Cells(SelRow, 1) For x = 8 To lr If Sheets("Proc2").Cells(x, 1) = Produce Then counter = counter + Sheets("Proc2").Cells(x, 6) Counter2 = Counter2 + Sheets("Proc2").Cells(x, 7) Counter3 = Counter3 + 1 End If Next x w = Math.Round(counter, 2) V = Math.Round(Counter2, 2) sd = Counter3 On Error Resume Next сs = Application.WorksheetFunction.VLookup(Target, Sheets("N15").Range("H2:I1000"), 2, False) MsgBox "[" & w & "]" & " " & "[" & V & "]" & " " & "[" & sd & "]" & vbCrLf & vbCrLf & сs
[/vba]
А я на первом этапе хочу, чтобы VBA сам вывел по уникальному номеру из коллекции суммы по каждому уникальному значению последовательно... в несколько месседжбоксов
Прошу помочь с первым этапом, как скрестить значения коллекции с counter'om
Может, решение лежит через другие подходы, хотел бы посмотреть и другие направления решения.ant6729
Sub мяу() Dim ar, ai, ak, arCount() Dim count1&, count2& Dim i& ar = [a8:f15] With CreateObject("Scripting.Dictionary") For i = 1 To UBound(ar) .Item(ar(i, 1)) = .Item(ar(i, 1)) + ar(i, 6) Next ak = .keys ai = .items ReDim arCount(.Count - 1) For i = 0 To .Count - 1 If ai(i) <= 100 Then count1 = count1 + 1 Else count2 = count2 + 1 arCount(i) = ak(i) & " - " & ai(i) MsgBox arCount(i) Next MsgBox Join(arCount, vbLf) MsgBox "До 100 - " & count1 & vbLf & "Свыше 100 или равно - " & count2 End With End Sub
[/vba]
[vba]
Код
Sub мяу() Dim ar, ai, ak, arCount() Dim count1&, count2& Dim i& ar = [a8:f15] With CreateObject("Scripting.Dictionary") For i = 1 To UBound(ar) .Item(ar(i, 1)) = .Item(ar(i, 1)) + ar(i, 6) Next ak = .keys ai = .items ReDim arCount(.Count - 1) For i = 0 To .Count - 1 If ai(i) <= 100 Then count1 = count1 + 1 Else count2 = count2 + 1 arCount(i) = ak(i) & " - " & ai(i) MsgBox arCount(i) Next MsgBox Join(arCount, vbLf) MsgBox "До 100 - " & count1 & vbLf & "Свыше 100 или равно - " & count2 End With End Sub
Как только я осознаю, что начинаю волочить... и вот уже сам немного пишу и могу прописать 3-4 задачи сам себе...и гордости полные карманы... Так появляется код или коды...которые вводят меня в интеллектуальную депрессию и я понимаю, что мне опять мне садиться, выделять время и копать... копать.. .копать...
Спасибо, iMrTidy и RAN за примеры Ваших реализаций задач!!!
Как только я осознаю, что начинаю волочить... и вот уже сам немного пишу и могу прописать 3-4 задачи сам себе...и гордости полные карманы... Так появляется код или коды...которые вводят меня в интеллектуальную депрессию и я понимаю, что мне опять мне садиться, выделять время и копать... копать.. .копать...
Спасибо, iMrTidy и RAN за примеры Ваших реализаций задач!!!ant6729