Всем привет. Начал учить как пользоваться словарём и столкнулся с проблемой. Не могу вытащить из него значения в нужную ячейку. А именно, данные по соответствующей дате из листа "значение1" в итоговый лист "бддс" в строку с таким же названием. Пока только по 1 листу делаю, потому хочу уже на все листы цикл сделать. Уже всё перепробовал и теперь надеюсь на вашу помощь. Хотелось что бы просто указали на ошибки, где что исправить, но не присылали готовый код)
Ниже прилагаю файл с моим убожеством)
Всем привет. Начал учить как пользоваться словарём и столкнулся с проблемой. Не могу вытащить из него значения в нужную ячейку. А именно, данные по соответствующей дате из листа "значение1" в итоговый лист "бддс" в строку с таким же названием. Пока только по 1 листу делаю, потому хочу уже на все листы цикл сделать. Уже всё перепробовал и теперь надеюсь на вашу помощь. Хотелось что бы просто указали на ошибки, где что исправить, но не присылали готовый код)
... B = Worksheets("значение1").[A4].CurrentRegion.Value
For i = 2 To UBound(B, 2) Dic(B(2, 1) & B(1, i)) = B(2, i) Next With Worksheets("бддс") For i = 2 To UBound(A) For j = 2 To UBound(A, 2) If Dic.Exists(A(i, 1) & A(1, j)) Then .Cells(5, j) = Dic(B(2, 1) & B(1, j)) Next j Next i End With End Sub
[/vba]
Там бОльшую часть исправлять надо:
[vba]
Код
... B = Worksheets("значение1").[A4].CurrentRegion.Value
For i = 2 To UBound(B, 2) Dic(B(2, 1) & B(1, i)) = B(2, i) Next With Worksheets("бддс") For i = 2 To UBound(A) For j = 2 To UBound(A, 2) If Dic.Exists(A(i, 1) & A(1, j)) Then .Cells(5, j) = Dic(B(2, 1) & B(1, j)) Next j Next i End With End Sub
Отнюдь! Так даже намного удобней: при наведении курсора видно значение. В отличии от комбинации Dic.item(A(i, 1) & A(1, j)) = A(i, j) Лично я давно отказался от item в словарях. Разве что выгрузить в массив: U=Dic.items
Цитата
На мой взгляд следующая строка очень странная
Отнюдь! Так даже намного удобней: при наведении курсора видно значение. В отличии от комбинации Dic.item(A(i, 1) & A(1, j)) = A(i, j) Лично я давно отказался от item в словарях. Разве что выгрузить в массив: U=Dic.itemsalex77755
Dim i As Integer Dim j As Integer Dim Dic Dim a(), B()
Set Dic = CreateObject("Scripting.Dictionary") Application.ScreenUpdating = False For i = 1 To 7 B = Worksheets("значение" & i).[a4].CurrentRegion.Value For j = 2 To UBound(B, 2) Dic(B(2, 1) & B(1, j)) = B(2, j) Next j Next i
With Worksheets("бддс") a = .[a4].CurrentRegion.Value For j = 2 To UBound(a) For i = 2 To UBound(a, 2) If Dic.Exists(a(j, 1) & a(1, i)) Then a(j, i) = Dic(a(j, 1) & a(1, i)) Next i Next j .[a4].CurrentRegion.Value = a End With Application.ScreenUpdating = True End Sub
[/vba]
[vba]
Код
Sub govno_code()
Dim i As Integer Dim j As Integer Dim Dic Dim a(), B()
Set Dic = CreateObject("Scripting.Dictionary") Application.ScreenUpdating = False For i = 1 To 7 B = Worksheets("значение" & i).[a4].CurrentRegion.Value For j = 2 To UBound(B, 2) Dic(B(2, 1) & B(1, j)) = B(2, j) Next j Next i
With Worksheets("бддс") a = .[a4].CurrentRegion.Value For j = 2 To UBound(a) For i = 2 To UBound(a, 2) If Dic.Exists(a(j, 1) & a(1, i)) Then a(j, i) = Dic(a(j, 1) & a(1, i)) Next i Next j .[a4].CurrentRegion.Value = a End With Application.ScreenUpdating = True End Sub