Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.10.2011, 11:54   #1
Bape}l{ka
Форумчанин
 
Аватар для Bape}l{ka
 
Регистрация: 25.05.2011
Сообщений: 249
По умолчанию замена значений ячеек значениями из коллекции

доброе утро, знатоки!))

есть коллекция имен с присвоенными им кодами на отдельном листе.
задача: заменить эти значения/имена в базе (на другом листе) на соответствующие коды

вобщем-то, если в лоб, то можно сделать перебором значений коллекции до совпадения со значением из базы и подстановкой кода, который в соседней ячейке.. но это долго, и я хотела у вас спросить, как это можно реализовать через массивы? используя двумерный массив загнать туда значение-код??
не совсем понимаю, как работают двумерные и n-мерные массивы Т_Т помогите разобраться... или может какую литературу с примерами нормальными про массивы посоветуете?

пример файла: 2мерный_Массив.rar
Bape}l{ka вне форума Ответить с цитированием
Старый 03.10.2011, 12:27   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Простейший макрос вам поможет:
Код:
Sub test()
    Dim sh As Worksheet: Set sh = Worksheets("Key Q40")
    Dim cell As Range, ra As Range: Application.ScreenUpdating = False
    Set ra = sh.Range(sh.[b2], sh.Range("b" & sh.Rows.Count).End(xlUp))
    For Each cell In ra.Cells
        ActiveSheet.UsedRange.Replace cell, cell.Next, xlWhole
    Next cell
End Sub
И незачем мудрить с массивами...

PS: Что значит долго? Полсекунды?
EducatedFool вне форума Ответить с цитированием
Старый 03.10.2011, 12:40   #3
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Да, только наоборот, слова на коды надо заменить?
Код:
Sub test()
    Dim sh As Worksheet: Set sh = Worksheets("Key Q40")
    Dim cell As Range, ra As Range: Application.ScreenUpdating = False
    Set ra = sh.Range(sh.[C2], sh.Range("C" & sh.Rows.Count).End(xlUp))
    For Each cell In ra.Cells
        ActiveSheet.UsedRange.Replace cell, cell.Previous, xlWhole
    Next cell
End Sub
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 03.10.2011, 13:12   #4
Bape}l{ka
Форумчанин
 
Аватар для Bape}l{ka
 
Регистрация: 25.05.2011
Сообщений: 249
По умолчанию

да, слова на коды)) спасибо большое))

но это тут пример маленький, а если там тыщи строк и десятки столбцов??
я просто слышала, что массивы гораздо быстрее циклов For.. или это не относится к For each??

блииин.. красиво! мне до такого еще далеко Т_Т
ну что ж... будем учиться =ь

Последний раз редактировалось Bape}l{ka; 03.10.2011 в 13:21.
Bape}l{ka вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обїединение ячеек с одинаковыми значениями WORD Сергей846 Microsoft Office Word 9 19.08.2016 22:48
замена значений DeDoK JavaScript, Ajax 5 24.05.2011 02:16
Автоматическая замена значений Mr.Jass Microsoft Office Excel 8 23.11.2010 17:20
Автоматическая замена формул значениями lordneo Microsoft Office Excel 2 17.08.2010 20:46
Замена одинаковых значений Ярик 555 Microsoft Office Excel 6 09.02.2010 04:50