Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Использование словаря, подстановка значений - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Использование словаря, подстановка значений (Макросы/Sub)
Использование словаря, подстановка значений
Mayseven Дата: Воскресенье, 04.09.2016, 14:03 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Всем привет.
Начал учить как пользоваться словарём и столкнулся с проблемой.
Не могу вытащить из него значения в нужную ячейку. А именно, данные по соответствующей дате из листа "значение1" в итоговый лист "бддс" в строку с таким же названием.
Пока только по 1 листу делаю, потому хочу уже на все листы цикл сделать.
Уже всё перепробовал и теперь надеюсь на вашу помощь.
Хотелось что бы просто указали на ошибки, где что исправить, но не присылали готовый код)

Ниже прилагаю файл с моим убожеством)
К сообщению приложен файл: _-.xlsm(26Kb)


Сообщение отредактировал Mayseven - Воскресенье, 04.09.2016, 14:29
 
Ответить
СообщениеВсем привет.
Начал учить как пользоваться словарём и столкнулся с проблемой.
Не могу вытащить из него значения в нужную ячейку. А именно, данные по соответствующей дате из листа "значение1" в итоговый лист "бддс" в строку с таким же названием.
Пока только по 1 листу делаю, потому хочу уже на все листы цикл сделать.
Уже всё перепробовал и теперь надеюсь на вашу помощь.
Хотелось что бы просто указали на ошибки, где что исправить, но не присылали готовый код)

Ниже прилагаю файл с моим убожеством)

Автор - Mayseven
Дата добавления - 04.09.2016 в 14:03
Karataev Дата: Воскресенье, 04.09.2016, 14:32 | Сообщение № 2
Группа: Проверенные
Ранг: Ветеран
Сообщений: 641
Репутация: 226 ±
Замечаний: 0% ±

Excel
Опишите словами Вашу задачу. Из Вашего файла примера и кода я не смог понять задачу.
Конечно, кто-нибудь другой может поймет, за всех не пишу.


 
Ответить
СообщениеОпишите словами Вашу задачу. Из Вашего файла примера и кода я не смог понять задачу.
Конечно, кто-нибудь другой может поймет, за всех не пишу.

Автор - Karataev
Дата добавления - 04.09.2016 в 14:32
KuklP Дата: Воскресенье, 04.09.2016, 14:39 | Сообщение № 3
Группа: Проверенные
Ранг: Старожил
Сообщений: 1996
Репутация: 436 ±
Замечаний: 0% ±

Там бОльшую часть исправлять надо:

[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
[/vba]


Ну, с НДС и мы чего-то стoим! kuklp@mail.ru
WM Z206653985942, R334086032478, U238399322728


Сообщение отредактировал KuklP - Воскресенье, 04.09.2016, 14:40
 
Ответить
СообщениеТам бОльшую часть исправлять надо:

[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
[/vba]

Автор - KuklP
Дата добавления - 04.09.2016 в 14:39
Udik Дата: Воскресенье, 04.09.2016, 14:42 | Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 1208
Репутация: 153 ±
Замечаний: 0% ±

Excel 2013
Хотелось что бы просто указали на ошибки, где что исправить, но не присылали готовый код)

На мой взгляд следующая строка очень странная
[vba]
Код

  Dic(A(i, 1) & A(1, j)) = A(i, j)
[/vba]
если хотите добавить в словарь пару ключ-значение, то что-то навроде
[vba]
Код

oDict.Add .Cells(i, 2).Value, .Cells(i, 3).Value
[/vba]


вот вам барабан
яд 41001231307558 wm R419131876897
udik1968@gmail.com
 
Ответить
Сообщение
Хотелось что бы просто указали на ошибки, где что исправить, но не присылали готовый код)

На мой взгляд следующая строка очень странная
[vba]
Код

  Dic(A(i, 1) & A(1, j)) = A(i, j)
[/vba]
если хотите добавить в словарь пару ключ-значение, то что-то навроде
[vba]
Код

oDict.Add .Cells(i, 2).Value, .Cells(i, 3).Value
[/vba]

Автор - Udik
Дата добавления - 04.09.2016 в 14:42
alex77755 Дата: Воскресенье, 04.09.2016, 17:59 | Сообщение № 5
Группа: Проверенные
Ранг: Обитатель
Сообщений: 301
Репутация: 46 ±
Замечаний: 0% ±

Цитата
На мой взгляд следующая строка очень странная

Отнюдь! Так даже намного удобней: при наведении курсора видно значение. В отличии от комбинации
Dic.item(A(i, 1) & A(1, j)) = A(i, j)
Лично я давно отказался от item в словарях.
Разве что выгрузить в массив: U=Dic.items


Могу помочь в VB6, VBA
Alex77755@mail.ru
 
Ответить
Сообщение
Цитата
На мой взгляд следующая строка очень странная

Отнюдь! Так даже намного удобней: при наведении курсора видно значение. В отличии от комбинации
Dic.item(A(i, 1) & A(1, j)) = A(i, j)
Лично я давно отказался от item в словарях.
Разве что выгрузить в массив: U=Dic.items

Автор - alex77755
Дата добавления - 04.09.2016 в 17:59
alex77755 Дата: Воскресенье, 04.09.2016, 18:06 | Сообщение № 6
Группа: Проверенные
Ранг: Обитатель
Сообщений: 301
Репутация: 46 ±
Замечаний: 0% ±

Цитата
дате из листа "значение1" в итоговый лист "бддс"

Для этого в словарь нужно грузить данные с Значение1 а не из "бдсс"


Могу помочь в VB6, VBA
Alex77755@mail.ru


Сообщение отредактировал alex77755 - Воскресенье, 04.09.2016, 18:07
 
Ответить
Сообщение
Цитата
дате из листа "значение1" в итоговый лист "бддс"

Для этого в словарь нужно грузить данные с Значение1 а не из "бдсс"

Автор - alex77755
Дата добавления - 04.09.2016 в 18:06
alex77755 Дата: Воскресенье, 04.09.2016, 18:21 | Сообщение № 7
Группа: Проверенные
Ранг: Обитатель
Сообщений: 301
Репутация: 46 ±
Замечаний: 0% ±

[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
[/vba]


Могу помочь в VB6, VBA
Alex77755@mail.ru


Сообщение отредактировал alex77755 - Воскресенье, 04.09.2016, 18:22
 
Ответить
Сообщение[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
[/vba]

Автор - alex77755
Дата добавления - 04.09.2016 в 18:21
Mayseven Дата: Понедельник, 05.09.2016, 12:06 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Всем спасибо за ответы

буду работать над ошибками ) thumb


Сообщение отредактировал Mayseven - Понедельник, 05.09.2016, 12:06
 
Ответить
СообщениеВсем спасибо за ответы

буду работать над ошибками ) thumb

Автор - Mayseven
Дата добавления - 05.09.2016 в 12:06
Mayseven Дата: Среда, 07.09.2016, 13:40 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Окачу парой тупых вопросов)
1.
Цитата
For i = 1 To 7

что конкретно перебирается ?) у меня как 7 строк, 7 листов и 7 дат

2.
Цитата
For j = 2 To UBound....

Почему во всех случаях начинается отчёт с 2 ?) Что с этим связано ?)

а так со всем разобрался
 
Ответить
СообщениеОкачу парой тупых вопросов)
1.
Цитата
For i = 1 To 7

что конкретно перебирается ?) у меня как 7 строк, 7 листов и 7 дат

2.
Цитата
For j = 2 To UBound....

Почему во всех случаях начинается отчёт с 2 ?) Что с этим связано ?)

а так со всем разобрался

Автор - Mayseven
Дата добавления - 07.09.2016 в 13:40
Hugo Дата: Среда, 07.09.2016, 13:51 | Сообщение № 10
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2653
Репутация: 597 ±
Замечаний: 0% ±

что конкретно перебирается ?

Цитата
Worksheets("значение" & i).

Почему во всех случаях начинается отчёт с 2 ?) Что с этим связано ?)

думаю потому что первая строка не нужна.


excel@nxt.ru
webmoney: E265281470651 R418926282008 Z422237915069
 
Ответить
Сообщение
что конкретно перебирается ?

Цитата
Worksheets("значение" & i).

Почему во всех случаях начинается отчёт с 2 ?) Что с этим связано ?)

думаю потому что первая строка не нужна.

Автор - Hugo
Дата добавления - 07.09.2016 в 13:51
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Использование словаря, подстановка значений (Макросы/Sub)
Страница 1 из 11
Поиск:

Яндекс цитирования
© 2010-2016 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!