У меня данных много бывает, самое большое, что было - это порядка 8000 значений, из них уникальных около 1200, если ничего не путаю. Раньше прописывал ручками через фильтрацию, но пришел к выводу, что время от времени попадаются одни и те же значения, поэтому надо как-то автоматизировать процесс, чтобы не выполнять двойную работу изо дня в день.
Знаю, что есть какие-то надстройки на эксель, но это не мой вариант. Не всегда есть под рукой комп, а устанавливать на чужую машину доп софт не всегда удобно.
Поиск уникальный значений (VBA) и подстановка данных к ним из "словаря"
Пользователь
Сообщений: Регистрация: 15.09.2018
12.03.2020 21:25:14
Hugo, все работает отлично. Спасибо большое за решение.
Остается вопрос только с самим макросом. Уж очень сильно он нагружает проц, работает в 12 потоках ((( Может быть у кого-то есть менее требовательный код ?
Поиск уникальный значений (VBA) и подстановка данных к ним из "словаря"
Пользователь
Сообщений: Регистрация: 15.09.2018
12.03.2020 20:03:28
Юрий М, слова "томат" и "свежий" должны тянуться из столбцов L и M. Но не тянутся, поэтому я их задал руками для примера, чтобы было понятно, какие данные туда должны идти. Но видимо я всех этим только запутал (((
Сложная у меня конструкция вырисовывается, но логика такая, к уникальным параметрам подставляем значения из словаря, если они имеются, потом из уникальных разбрасываем параметры по основному списку.
Изменено: - 12.03.2020 20:05:49
Поиск уникальный значений (VBA) и подстановка данных к ним из "словаря"
Пользователь
Сообщений: Регистрация: 15.09.2018
12.03.2020 19:46:46
Юрий М, так я с этими ошибками и пришел. В столбцах F и G выделил значения желтым, их задал вручную и они подставляются. Но мне надо связать их со словарем, а при связки выдается ошибка ((( Поэтому и поднял эту тему.
Поиск уникальный значений (VBA) и подстановка данных к ним из "словаря"
Пользователь
Сообщений: Регистрация: 15.09.2018
12.03.2020 19:31:18
Сократил данные, прикрепляю
Андрей_26, из этих уникальных значений я и формирую словарь для однотипных данных. Если их нет в словаре, то я буду видеть, для каких значений их необходимо добавить. Как-то так.
Изменено: - 12.03.2020 22:14:59
Поиск уникальный значений (VBA) и подстановка данных к ним из "словаря"
Пользователь
Сообщений: Регистрация: 15.09.2018
12.03.2020 19:11:35
Юрий М, нет ((( тут ограничение на 100 кб, а пример оказался больше
Поиск уникальный значений (VBA) и подстановка данных к ним из "словаря"
Пользователь
Сообщений: Регистрация: 15.09.2018
12.03.2020 18:43:39
Друзья, доброго времени суток.
Работаю с большим объемом однотипных данных. Стоит задача, чтобы к каждому уникальному значению присвоить 2 параметра.
Частично задачу реализовал, но есть 2 проблемы, с которыми самостоятельно справиться мне не под силу (((
1. Нашел в сети макрос, который вычленяет уникальные значения и выводит их в отдельный столбец. Работает вроде как исправно, но при большом объеме данных перегружает процессор i7 вешает комп ((( Буду признателен, если кто-нибудь предложит более оптимизированную альтернативу ему.
Скрытый текст
Код
Function listUnique(rng As Range) As Variant
Dim val As String
Dim elements() As String
Dim elementSize As Integer
Dim newElement As Boolean
Dim i As Integer
Dim distance As Integer
Dim allocationChunk As Integer
Dim uniqueSize As Integer
Dim r As Long
Dim lLastRow As Long
lLastRow = rng.End(xlDown).Row
elementSize = 1
unqueSize = 0
distance = Range(Application.Caller.Address).Row - rng.Row
If distance <> 0 Then
If Cells(Range(Application.Caller.Address).Row - 1, Range(Application.Caller.Address).Column).Value = "" Then
listUnique = ""
Exit Function
End If
End If
For r = 1 To lLastRow
val = rng.Cells(r)
If val <> "" Then
newElement = True
For i = 1 To elementSize - 1 Step 1
If elements(i - 1) = val Then
newElement = False
Exit For
End If
Next i
If newElement Then
uniqueSize = uniqueSize + 1
If uniqueSize >= elementSize Then
elementSize = elementSize * 2
ReDim Preserve elements(elementSize - 1)
End If
elements(uniqueSize - 1) = val
End If
End If
Next
If distance < uniqueSize Then
listUnique = elements(distance)
Else
listUnique = ""
End If
End Function
2. Формулой реализована подстановка параметров к каждому уникальному значению. С решением помогли . Это работает. Но когда пытаюсь аналогичным способом подставить данные - выходит #ССЫЛКА!.
И наверное 3-я проблема, которая плавающая, иногда ячейка E3 оказывается пустой, хотя в E2, E4 и далее есть данные. Не могу сейчас получить пустоту, но пару раз проскакивала. Грешу на макрос или затуп компа.
Прикрепляю пример моего файла . Логика работы такая, столбец А содержит данные, столбец E - только уникальные из столбца А. Столбцы F и G -параметры, которые подставляются в столбцы B-C на основе уникальных значений. Задача, связать столбцы E и K, для подстановки параметров из словаря.
Благодарю.
Много букв, наверное ничего не понятно написал, но как смог - так и объяснил свою проблему.
Макрос/функция автозамены значений при совпадении в словаре
Макрос/функция автозамены значений при совпадении в словаре
Пользователь
Сообщений: Регистрация: 15.09.2018
26.02.2020 21:22:44
aequit, супер. спасибо. Одним головняком меньше. Но все же, какие параметры менять, чтобы менять столбец вывода ? Мне в следующий раз будет уже не удобно Вас просить поменять столбец в случае чего (((
Макрос/функция автозамены значений при совпадении в словаре
Пользователь
Сообщений: Регистрация: 15.09.2018
26.02.2020 01:30:49
aequit, чет сравнивал я два кода и так и не разобрался ((( В моем обновленном варианте появился столбец, где формулой делается первая буква заглавной. Прикрепляю мой обновленный пример и на всякий случай код, как я пытался модифицировать.
Скрытый текст
Код
Sub Zamena()
'aequit 24.02.2020
Dim k&, l&, sl, s$
Dim w As Worksheet
Set w = Worksheets("Лист1")
sl = Range("Словарь")
For l = 2 To w.Cells(Rows.Count, 3).End(xlUp).Row
s = w.Cells(l, 3)
For k = 1 To UBound(sl)
If InStr(1, w.Cells(l, 3), sl(k, 1)) > 0 Then
s = Replace(s, sl(k, 1), sl(k, 2))
End If
Next k
w.Cells(l, 4) = s
Next l
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("C:C")) Is Nothing Then Exit Sub
Application.ScreenUpdating = False
Call Zamena
Application.ScreenUpdating = True
End Sub
Буду признателен, если укажите, где у меня ошибка, чтобы самостоятельно мог менять столбцы и не надоедать своими просьбами подправить
Благодарю
Изменено: - 26.02.2020 01:31:15
Макрос/функция автозамены значений при совпадении в словаре
Пользователь
Сообщений: Регистрация: 15.09.2018
26.02.2020 00:33:28
aequit, в том-то и дело, что структуры финальной нет ((( Пока только формирую файлик, поэтому меняю постоянно туда-сюда для оптимизации своей работы )))
Макрос/функция автозамены значений при совпадении в словаре
Пользователь
Сообщений: Регистрация: 15.09.2018
25.02.2020 19:37:06
aequit, вроде бы понял. Спасибо за разъяснение. Попробую самостоятельно разобраться. Надеюсь получится )))
Сравнить столбцы и подставить соответствующие параметры
Сравнить столбцы и подставить соответствующие параметры
Пользователь
Сообщений: Регистрация: 15.09.2018
25.02.2020 05:01:55
Доброго времени суток. Либо лыжи не едут, либо пора в отпуск. Никак не могу победить стоящую задачу.
Есть список со значениями (столбец А). Формулой вытаскиваю из него только уникальные значения (Столбец I). Задача состоит в том, чтобы рядом с каждым уникальным значением я прописал 2 параметра и они автоматически передались в основной список (Столбцы В и С).
Наверное непонятно объяснил, поэтому прикрепляю пример, на отдельный лист вынес, какой результат хочу получить в итоге.
Благодарю.
Макрос/функция автозамены значений при совпадении в словаре
Пользователь
Сообщений: Регистрация: 15.09.2018
24.02.2020 21:11:45
aequit, я так понимаю, что меня интересует строчка
Код
If Intersect(Target, Range("A:A")) Is Nothing Then Exit Sub
Но почему-то при изменении буквы колонки перестает работать (((
Изменено: - 24.02.2020 21:12:18
Макрос/функция автозамены значений при совпадении в словаре
Последний вопрос. Сейчас немного модернизировал свою таблицу, никак не пойму, как изменить столбец вывода ((( В данный момент данные должны браться из столбца В и с корректировками отображаться в столбце С.
Благодарю
Макрос/функция автозамены значений при совпадении в словаре
Пользователь
Сообщений: Регистрация: 15.09.2018
21.02.2020 22:50:52
Nordheim, если честно, так и не понял, как он работает
aequit, супер, то, что надо. Вот только хотелось бы, чтобы без кнопки все работало, на полном автомате. Если в рамках одной страницы полную автоматизацию реализовать нельзя, то результаты с корректировками можно вынести на отдельную страницу, это не принципиально.
Макрос/функция автозамены значений при совпадении в словаре
Пользователь
Сообщений: Регистрация: 15.09.2018
21.02.2020 15:19:28
Андрей VG, Вы правы. Я гуманитарий до мозга костей, код дается очень тяжко. Если с формулами еще хоть как-то могу разобраться на основе готовых решений в сети, то с VBA вообще не ладится (((
Nordheim, aequit, спасибо большое. Вечером протестирую и отпишусь
Макрос/функция автозамены значений при совпадении в словаре
Пользователь
Сообщений: Регистрация: 15.09.2018
21.02.2020 03:12:56
Доброго времени суток. Вторые сутки пытаюсь нагуглить подобный функционал, но пока безуспешно. Вдруг у кого-то есть что-то подобное.
Суть задачи, есть 2 страницы, одна с исходными данными, вторая со словариком. Макрос должен найти на странице точные совпадения со словами из словаря (столбец А) и в случае нахождения совпадения заменить найденное слово на соответствующее (столбец B). В процессе "словарь" будет расширяться. Будет использоваться, как кириллица, так и латиница, если это конечно важно )))
Заранее благодарю всех, кто не прошел мимо и помог в реализации задуманного.
Проверить символы в строке и выполнить условие
Пользователь
Сообщений: Регистрация: 15.09.2018
07.02.2020 01:34:34
Все отлично работает. Благодарю
Проверить символы в строке и выполнить условие
Пользователь
Сообщений: Регистрация: 15.09.2018
07.02.2020 00:47:24
Ігор Гончаренко, супер. Чуть попозже перенесу на рабочий файл и отпишусь. В любом случае низкий поклон за проделанную работу
Проверить символы в строке и выполнить условие
Пользователь
Сообщений: Регистрация: 15.09.2018
06.02.2020 23:02:30
Kuzmich, разобрался. Спасибо. А нельзя сделать так, чтобы макрос был всегда активен ? А то получается, что каждый раз при внесении изменений его надо заново запускать.
Проверить символы в строке и выполнить условие
Пользователь
Сообщений: Регистрация: 15.09.2018
06.02.2020 22:17:05
Kuzmich, спасибо большущее. Вот только как это интегрировать ? Я что-то никак не могу понять (((
Проверить символы в строке и выполнить условие
Пользователь
Сообщений: Регистрация: 15.09.2018
06.02.2020 21:25:05
Ігор Гончаренко, да как бы все в первом посте расписал. Вот прикрепляю пример, но знаю как более подробно его расписать
то из строки со скобками убирает плюсы, но и из строк без скобок так же плюсы трет (((
Проверить символы в строке и выполнить условие
Пользователь
Сообщений: Регистрация: 15.09.2018
06.02.2020 05:02:03
Ігор Гончаренко, не хочет. Как были плюсы со скобками - так и оставляет. А там, где должны быть плюсы - убирает их
Проверить символы в строке и выполнить условие
Пользователь
Сообщений: Регистрация: 15.09.2018
06.02.2020 04:45:05
Доброго времени суток. Подскажите пожалуйста, как сделать проверку на наличие спец. символа с строке, и если он есть - ничего не трогать, если нет - поставить знак плюса перед каждым словом.
Пример:
[мама мыла раму] -> [мама мыла раму] - есть спец символ квадратная скобка. Если она есть, то данную строку (ячейку) не трогаем маша ела кашу -> +маша +ела +кашу - в строке нет спецсимвола в виде квадратной скобки, следовательно ставим перед каждым словом плюсик
В данный момент у меня плюсы подставляет вот такая формула:
но она никак не реагирует на скобки ((( В итоге получаю: +[мама +мыла +раму]
Очень прошу помощи. Благодарю.
Изменено: - 06.02.2020 04:45:53
Удалить дубли и вывести число их повторений в файле
Пользователь
Сообщений: Регистрация: 15.09.2018
06.02.2019 23:40:42
ocet p, хотелось бы как-то автоматизировать данный процесс, т.к. чувствую надо будет это делать раз в неделю (((
Удалить дубли и вывести число их повторений в файле
Пользователь
Сообщений: Регистрация: 15.09.2018
03.02.2019 02:45:09
День добрый. Есть файл поручений, где за каждым сотрудником записывается, какое он выполнил. Мне необходимо автоматом посчитать, количество выполненных поручений. В арсенале имею только один столбец в таблице.