Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Microsoft Office и VBA > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 28.08.2017, 19:30   #11
strannick
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 433
Репутация: 19
По умолчанию

Срабатывает только в том случае, когда в массиве, из которого формируется словарь, нет повторяющихся данных (но это пол беды, таких по идее и не должно быть), но и когда в этом массиве нет пустых ячеек. А вот это точно будет.
strannick вне форума   Ответить с цитированием
Старый 28.08.2017, 22:12   #12
Hugo121
Профессионал
 
Регистрация: 11.05.2010
Сообщений: 5,046
Репутация: 530
По умолчанию

Да ладно
Как напишите - так и будет срабатывать. Можно написать так, что срабатываь будет всегда. А можно и наоборот... или так, как описали
Вообще результат работы макроса сохранения в словаре индекса массива ничем не отличается от макроса с сохранением в словаре значения массива, как было у Вас
Ну т.е. ключ+значение = ключ+индекс_массива_с_значениями по которому всегда можно взять это значение.
__________________
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 28.08.2017 в 22:49.
Hugo121 на форуме   Ответить с цитированием
Старый 30.08.2017, 10:14   #13
RAN.
Форумчанин
 
Аватар для RAN.
 
Регистрация: 05.07.2011
Сообщений: 208
Репутация: 48
По умолчанию

Код:
Option Explicit
    Dim oDict As Object

Sub qq()
    Dim sh2 As Worksheet
    Dim ar
    Dim i&, j&
    Dim y
    
    If oDict Is Nothing Then
        Set oDict = CreateObject("scripting.dictionary")
        Set sh2 = Sheets("Товары")
        With sh2.Cells(1, 1).CurrentRegion
            With .Offset(, 1).Resize(, .Columns.Count - 1)
                ar = .Value
                For i = 1 To UBound(ar)
                    For j = 1 To UBound(ar, 2)
                        If oDict.exists(ar(i, j)) Then
                            oDict.Item(ar(i, j)) = oDict.Item(ar(i, j)) & "|" & i
                        Else
                            If Len(ar(i, j)) Then oDict.Item(ar(i, j)) = i
                        End If
                    Next
                Next
            End With
        End With
    End If
    y = 44
    If oDict.exists(y) Then
        MsgBox "Искомое содержится в строках " & Join(Split(oDict.Item(y), "|"), ", ")
    End If
End Sub
RAN. вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выводить только измененные строки. Перед каждой строкой записывать номер строки в исходном тексте.используя строки и текст.файл nero4ka C++ Builder 1 13.06.2015 08:14
Выводить только измененные строки. Перед каждой строкой записывать номер строки в исходном тексте nero4ka Помощь студентам 1 11.06.2015 12:08
Ввести число N. Вывести N строк с номером строки, двоеточием и набором чисел от 1 до N+1-k (где k-номер строки) ( в С ) Eduard12345 Помощь студентам 1 11.10.2013 07:25
Вытащить номер из X-Lite Letnab Работа с сетью в Delphi 7 03.05.2012 12:20
Как вывести на экран номер строки с максимальной суммой элементов и номер столбца с минимальной суммой? Vetal888888 C# (си шарп) 4 20.12.2011 13:46


17:50.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.