В ячейках у меня URL сайтов. Мне надо будет почистить его от дублей. Но проблема в том, что бывает на конце слэш.
Т.е. получаются неявные дубли. Собственно говоря, это один и тот же адрес. И вот такие неявные дубли мне надо как-то удалить.
Я думаю, что надо сначала очистить слэш на конце, если он есть. А потом схлопнуть дубли.
Желательно, обойтись без применения VBA.
Это возможно?
Как поймать Nothing?
Пользователь
Сообщений: Регистрация: 11.01.2013
20.08.2018 12:23:18
Разобрался, вроде. Я задал искать во всей колонке. А надо было ограничить.
Как поймать Nothing?
Пользователь
Сообщений: Регистрация: 11.01.2013
20.08.2018 12:19:30
ivanok_v2, это нарушит логику алгоритма. Мне надо отловить перехватить, когда метод Find не нашел искомое.
Проблема, похоже, вот в чем. Возвращается-то не Nothing. Возвращается объект Range. И в нем - внутри - в комментарии написано Nothing. Т.е. метод Find искал, не нашел, вернул такой объект. Что за зверь такой? По документации должен был вернуть Nothing.
Подскажите, пожалуйста, как мне поймать пустышку?
Как поймать Nothing?
Пользователь
Сообщений: Регистрация: 11.01.2013
20.08.2018 12:02:53
Я застрял.
Код
Private Sub check_status_correctness(a_row)
Dim status_col_rng As Range
Dim status_val As String
Dim found_status As Range
Set status_col_rng = Sheets("Settings").Columns(2)
status_val = Sheets(MAIN_SHEET).Cells(a_row, STATUS_COL)
Set found_status = status_col_rng.Find(status_val, LookIn:=xlValues, LookAt:=xlWhole)
If found_status Is Nothing Then
Call announce_error(a_row, STATUS_COL)
End If
End Sub
Картинка из дебаггера: В дебаггере, вроде бы, объект Nothing. Но вот условие не срабатывает. Т.е. found_status Is Nothing имеет значение False.
Помогите, пожалуйста, разобраться, как проверить, значение - это Nothing или нет.
Изменено: - 20.08.2018 13:00:53
Извлечь все подстроки с помощью регулярных выражений
Пользователь
Сообщений: Регистрация: 11.01.2013
11.08.2018 17:59:57
Не планировалось.
Спасибо. Вроде бы, проблема решилась паттерном "\/(.*?)\/".
Извлечь все подстроки с помощью регулярных выражений
Пользователь
Сообщений: Регистрация: 11.01.2013
11.08.2018 17:31:01
Excel 2007
Я хочу извлечь из строки с помощью регулярных выражений все подстроки между символами "/".
Код
Private Function get_all_matches(phrase)
Dim regEx As Object
Dim result As Variant
Set regEx = CreateObject("vbscript.regexp")
With regEx
.IgnoreCase = True
.Pattern = "/.*/"
.Global = True
End With
Set result = regEx.Execute(phrase)
Set get_all_matches = result
End Function
Использую подготовленную функцию:
Код
phrase = "where is /my/ ups /hiding/"
Set keys = get_all_matches(phrase)
Я не могу смоделировать ситуацию повторно. Ладно, буду дальше думать.
Удаление дубликатов: я хочу оставить все падежи
Пользователь
Сообщений: Регистрация: 11.01.2013
24.07.2018 11:57:38
Извините, пожалуйста, если что не так.
Пример прилагаю.
Удаление дубликатов: я хочу оставить все падежи
Пользователь
Сообщений: Регистрация: 11.01.2013
24.07.2018 11:46:18
Excel 2007
В столбец, помещаю данные:
шкатулка
шкатулки
шкатулки
шкатулок
шкатулке
шкатулкам
шкатулку
шкатулки
шкатулкой
шкатулками
шкатулке
шкатулках
шкатулке
шкатулках
Выделаю. Данные/Удалить дубликаты.
Получаю:
шкатулка
шкатулки
шкатулки
шкатулок
шкатулке
шкатулку
шкатулкой
Это не то, что я хотел бы видеть. Он же все падежи сократил. Мне надо оставить все словоформы, но по одному разу.
Результат я сейчас достигаю через расширенный фильтр. Но это сильно дольше.
Скажите, пожалуйста, что можно предпринять? Удалить дубликаты как-нибудь настраивается?
Перебрать в цикле значения из диапазона, если диапазон составляет одну ячейку
Пользователь
Сообщений: Регистрация: 11.01.2013
28.06.2018 00:12:57
Заданный мной вопрос, отражающий, видимо, суть VBA, для меня неясен. Если вы желаете упражняться в высокомерии, то у вас получается.
Если же можете помочь разобраться, помогите, пожалуйста.
Перебрать в цикле значения из диапазона, если диапазон составляет одну ячейку
Пользователь
Сообщений: Регистрация: 11.01.2013
27.06.2018 23:50:35
MS Office Excel 2007
Код
Set sh = Sheets("Лист1")
Set Result0 = Range(sh.Cells(1, 1), sh.Cells(1, 1)) 'Type Variant/Object/Range, Value "Текст1"
Set Result1 = Range(sh.Cells(1, 1), sh.Cells(2, 1)) 'Type Variant/Object/Range
Проблема у меня в том, что, вроде бы, применяю свойство Range единообразно. Разница в том, что в случае Result0 исходный диапазон составляет одну ячейку, а в случае Result1 ячеек две.
Я хотел бы перебрать результат в цикле. Пусть ячейка одна, но начало цикла будет совпадать с его концом, в результате будет одна итерация. Но в Result0 располагается как бы значение. И я никак не могу придумать, как можно в цикле перебрать содержимое этих обоих из этих объектов Range.
Применил метод Application.Transpose к обоим результатам. И вот здесь уже заметна разница.
Разница в том, что в случае с TransposedResult0 я не могу перебрать результат в цикле. А TransposedResult1 - вполне позволяет обратиться по индексу (TransposedResult1(1), TransposedResult1(2)).
Помогите, пожалуйста, добиться такого же результата для исходного диапазона в одну ячейку.
Изменено: - 28.06.2018 00:34:33
Найти Range в другом Range
Пользователь
Сообщений: Регистрация: 11.01.2013
25.06.2018 18:29:46
Цитата
yozhik написал: формулами - сцепить ключ и признак в доп столбце
Спасибо. Самое то.
Найти Range в другом Range
Пользователь
Сообщений: Регистрация: 11.01.2013
25.06.2018 18:20:00
Excel 2007.
У меня на листе Workshop в колонке 1 расположен признак ключа, а в колонке 2 расположен ключ. Например, ключ - Набор, а признак - Специи. Это будет ряд для набора специй. А также могут быть другие наборы, водочный, набор ножей и т.п.
На листе Variants у меня в колонке колонке 1 расположен признак ключа, а в колонке 2 расположен ключ.
Я хочу взять Sheets("Workshop").Range(Cells(1,1), Cells(1,2)), т.е. две ячейки - ключ с признаком в одном ряду. И найти этот ключ с признаком на листе Variants.
Я попробовал использовать метод Find - передал параметр Range в метод Find. И получил<Application-defined or object-defined error>.
Получается, надо брать Ключ, искать его в колонке на листе Variants. Потом проверять в соседней колонке признак. Если не совпадает с искомым признаком, применять метод FindNext, чтобы найти следующий ключ.
Мне кажется, это нерационально.
Подскажите, пожалуйста, наиболее рациональный способ решения этой задачи.
Метод Find не выдает Nothing
Пользователь
Сообщений: Регистрация: 11.01.2013
22.06.2018 20:58:43
Спасибо большое. Заработало. Еще бы переварить, что тут происходит. Ну, ладно, прикатается с практикой.
Метод Find не выдает Nothing
Пользователь
Сообщений: Регистрация: 11.01.2013
22.06.2018 19:43:31
Нет опыта программирования на VBA, сразу споткнулся.
Код
Беру в цикле ячейку и смотрю, есть ли она в нужном мне столбце:
CurrentValue = Cells(CurrentRow, CurrentCol).Value()
FoundCell = Sheets("Variants").Range("A:A").Find(What:=CurrentValue, LookAt:=xlWhole, MatchCase:=False, SearchFormat:=False)
Если значение в списке, все нормально. Если же значение не найдено, то программа выдает ошибку: Run-time error '91': Object variable or With block variable not set. Судя по документации, метод Find должен выдавать Nothing, если не найдено искомое. Почему он падает в ошибку? Как ее обработать? Где в документации смотреть?
Был бы признателен за ответ.
Перенести только формулы и форматы
Пользователь
Сообщений: Регистрация: 11.01.2013
02.09.2013 16:52:37
Спасибо. Это самое то.
Перенести только формулы и форматы
Пользователь
Сообщений: Регистрация: 11.01.2013
02.09.2013 16:26:16
А как скопировать только формулы-то? Мне ничего на ум не идет кроме как копирнуть лист, включить отображение формул вместо значений и чистить вручную. Но это для серьезной таблицы - не вариант.
Перенести только формулы и форматы
Пользователь
Сообщений: Регистрация: 11.01.2013
02.09.2013 16:18:22
Цитата
Я думаю, что необходимо отдельно копировать формат и отдельно формулу.
Не получается. Все равно цифры лезут.
Перенести только формулы и форматы
Пользователь
Сообщений: Регистрация: 11.01.2013
02.09.2013 16:15:57
Цифры стоят без равно. См. приложенный файл.
Перенести только формулы и форматы
Пользователь
Сообщений: Регистрация: 11.01.2013
02.09.2013 15:48:24
В А1 у меня 1, в А2 - 2. В А3 - сумма А1 и А2. Выделяю А1-А3. Копирую. Иду на новое место. Специальная вставка / формулы и форматы чисел. Вставляет почему-то с цифрами. Т.е. из А1 и А2 тянет цифры.
Помогите, пожалуйста.
Версии файла
Пользователь
Сообщений: Регистрация: 11.01.2013
31.05.2012 10:50:36
Забыл детали. Достигается щелчком правой кнопкой - свойства.
Версии файла
Пользователь
Сообщений: Регистрация: 11.01.2013
31.05.2012 10:46:10
Сегодня обнаружил, что могу просматривать версии своего файла.
Во-первых, это может быть удобно. Во-вторых, тут вопросы безопасности - дабы не раскрыть кому-то конфиденциальную информацию.
В общем, обнаружил такое свойство. И сразу попробовал на других файлах. Иногда версий нет (т.е. список версий пуст). А иногда вкладка с версиями вообще не доступна.
Не могли бы Вы подсказать, от чего это зависит.
В текстовой строке определить место символа.
Пользователь
Сообщений: Регистрация: 11.01.2013
14.05.2012 11:57:04
Неудачно получилось, извините, пожалуйста. Чтобы грамотно задать вопрос тоже нужно достичь определенного мастерства.
В текстовой строке определить место символа.
Пользователь
Сообщений: Регистрация: 11.01.2013
14.05.2012 11:20:20
Len не удобен, т.к. это был условный пример. В реале у меня символ стоит в середине строки неизвестной длины.
vikktur, ваш простой вариант не могу раскусить. Не могли бы Вы прокомментировать. Почему нужен мин, почему фигурные скобки, почему нужно сцепить А1 и KJP?
В текстовой строке определить место символа.
Пользователь
Сообщений: Регистрация: 11.01.2013
14.05.2012 10:46:53
Хочу в строке определить место символа, обозначающего поставщика. Поставщиков условно трое. Символы - J, K, P. Затрудняюсь скомбинировать функции FIND и OR. Офис английский 2003.
Бегунок и цифровая подпись
Пользователь
Сообщений: Регистрация: 11.01.2013
03.05.2012 15:50:05
Хочу реализовать вот это:
1. Один или два сотрудника готовят служебную записку, подписывают ее. В записке обозначен бюджет. 2. Отдают на подпись начальнику своего отдела. 3. Подписывает главбух. 4. Подписывает директор.
Затем сотрудник расходует бюджет и фиксирует все свои затраты.
В бумаге уже устали.
Присматриваюсь к цифровой подписи. Цифровая подпись к Excel-файлу, в принципе, прицепляется. Да вот беда - цифровая подпись возможна только одна. Цифровая подпись означает, что документ не изменился ни на один бит. Т.е. множественные подписи невозможны.
Не могли бы Вы посоветовать мне что-нибудь?
Разобраться с функцией TEXT
Пользователь
Сообщений: Регистрация: 11.01.2013
02.05.2012 13:33:07
Офис у меня английский 2003.
Хочу из даты получить текстовое: 19 апреля 2012 г., а в другйо ячейке April 19, 2012
Не получается почему-то.
Кроме того, возникли вопросы: 1. Почему разделитель у меня точка с запятой? По мануалу запятая должна быть. 2. Почему формат пытается доминировать в таблице - он может отображаться прямо в ячейке - dd.mm.yyyy. Или иначе (как на скриншоте). Но, тем не менее, формат - бывает - попадает в отображаемый результат работы формулы. 3. Почему на скриншоте цифра вклинилась в мясо - раздвинув формат. Справа-слева я бы еще понял. Этот вопрос - конечно, не глобальный, но, может быть, поможет понять суть этой формулы.
Импорт из 1С в Excel
Пользователь
Сообщений: Регистрация: 11.01.2013
21.03.2012 20:28:25
Не. Продажники задают цены в своей программе. В 1С мы обработкой затягиваем все данные для заказа (цена, количество и т.д.). Поэтому экспортировать никакой возможности нет. В 1С просто нет этих данных на тот момент, когда менеджер хочет 1С-очный счет. Так что мы у них тянем - это нормально. А теперь пусть они у нас тянут. Хочу, чтобы они именно тянули. Через xml или еще как. Пусть тянут.
Теоретически можно выгрузить заранее справочники. Контрагенты, наименования товаров. Но сколько раз можно так баловаться. Раз в месяц, а потом забудется. Т.е. я о том, что это чревато ошибками - информация не будет актуализирована на данную конкретную секунду.
Импорт из 1С в Excel
Пользователь
Сообщений: Регистрация: 11.01.2013
21.03.2012 19:55:09
Менеджеры по продажам у нас работают в старой программе. Они продают товар, им обычно хватает такого инструмента. А логисты и бухгалтерия работают в 1С 8.2.
Иногда попадаются такие клиенты, которым не нравится форма счета, которую выставляют менеджеры. Действительно, она, конечно страшненькая.
Собственно говоря, менеджеры договариваются о сделке, шлют логисту номер счета. Логист запускает обработку в 1С и подтягивает данные из старой программы.
Все работает нормально. Я - логист, и вот устал я менеджерам слать эти счета. Один-два счета в день, а все равно это нерационально. 1С у нас менеджерам руководство не купит.
Я бы хотел сделать шаблончик. Там шапка, подвал и поле для ввода номера счета. Макрос делает импорт из 1С и сохраняет новый файл с именем - номер счета + наименование покупателя.
Не могли бы Вы мне дать подсказку, как организовать такой импорт. И где почитать.