Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 3 4 5 След.
Удаление неявных дублей (на конце слэш)
 
В ячейках у меня URL сайтов. Мне надо будет почистить его от дублей. Но проблема в том, что бывает на конце слэш.
http://www.example.com/
http://www.example.com
Т.е. получаются неявные дубли. Собственно говоря, это один и тот же адрес. И вот такие неявные дубли мне надо как-то удалить.

Я думаю, что надо сначала очистить слэш на конце, если он есть. А потом схлопнуть дубли.

Желательно, обойтись без применения VBA.

Это возможно?
Как поймать Nothing?
 
Разобрался, вроде. Я задал искать во всей колонке. А надо было ограничить.
Как поймать Nothing?
 
ivanok_v2, это нарушит логику алгоритма. Мне надо отловить перехватить, когда метод Find не нашел искомое.

Проблема, похоже, вот в чем. Возвращается-то не Nothing. Возвращается объект Range. И в нем - внутри - в комментарии написано Nothing. Т.е. метод Find искал, не нашел, вернул такой объект. Что за зверь такой?
По документации должен был вернуть Nothing.
https://docs.microsoft.com/en-us/office/vba/api/Excel.Range.Find

Подскажите, пожалуйста, как мне поймать пустышку?
Как поймать Nothing?
 
Я застрял.

Код
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

Картинка из дебаггера: https://b.radikal.ru/b12/1808/0d/20f122b04984.png
В дебаггере, вроде бы, объект Nothing. Но вот условие не срабатывает. Т.е. found_status Is Nothing имеет значение False.

Помогите, пожалуйста, разобраться, как проверить, значение - это Nothing или нет.
Изменено: Михаил - 20 Авг 2018 13:00:53
Извлечь все подстроки с помощью регулярных выражений
 
Не планировалось.

Спасибо. Вроде бы, проблема решилась паттерном  "\/(.*?)\/".
Извлечь все подстроки с помощью регулярных выражений
 

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)
Результат:
Код
keys(0).Value: "/my/ ups /hiding/".

А хотелось вот так:

Код
keys(0).Value: "/my/"
keys(1).Value: "/hiding/"

Пример прилагаю.

Был бы признателен за помощь.

Удаление дубликатов: я хочу оставить все падежи
 
Цитата
PooHkrd написал:
Что я делаю не так?
Я не могу смоделировать ситуацию повторно. Ладно, буду дальше думать.
Удаление дубликатов: я хочу оставить все падежи
 
Извините, пожалуйста, если что не так.

Пример прилагаю.
Удаление дубликатов: я хочу оставить все падежи
 
Excel 2007

В столбец, помещаю данные:
шкатулка
шкатулки
шкатулки
шкатулок
шкатулке
шкатулкам
шкатулку
шкатулки
шкатулкой
шкатулками
шкатулке
шкатулках
шкатулке
шкатулках
Выделаю. Данные/Удалить дубликаты.

Получаю:
шкатулка
шкатулки
шкатулки
шкатулок
шкатулке
шкатулку
шкатулкой
Это не то, что я хотел бы видеть. Он же все падежи сократил.
Мне надо оставить все словоформы, но по одному разу.

Результат я сейчас достигаю через расширенный фильтр. Но это сильно дольше.

Скажите, пожалуйста, что можно предпринять? Удалить дубликаты как-нибудь настраивается?
Перебрать в цикле значения из диапазона, если диапазон составляет одну ячейку
 
Заданный мной вопрос, отражающий, видимо, суть VBA, для меня неясен.
Если вы желаете упражняться в высокомерии, то у вас получается.

Если же можете помочь разобраться, помогите, пожалуйста.
Перебрать в цикле значения из диапазона, если диапазон составляет одну ячейку
 
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 к обоим результатам. И вот здесь уже заметна разница.
https://d.radikal.ru/d41/1806/82/bf44fb2560fa.png
Разница в том, что в случае с TransposedResult0 я не могу перебрать результат в цикле.  А TransposedResult1 - вполне позволяет обратиться по индексу (TransposedResult1(1), TransposedResult1(2)).

Помогите, пожалуйста, добиться такого же результата для исходного диапазона в одну ячейку.
Изменено: Михаил - 28 Июн 2018 00:34:33
Найти Range в другом Range
 
Цитата
yozhik написал:
формулами - сцепить ключ и признак в доп столбце
Спасибо. Самое то.
Найти Range в другом Range
 
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
 
Спасибо большое. Заработало. Еще бы переварить, что тут происходит. Ну, ладно, прикатается с практикой.
Метод Find не выдает Nothing
 
Нет опыта программирования на 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, если не найдено искомое. Почему он падает в ошибку? Как ее обработать? Где в документации смотреть?

Был бы признателен за ответ.
Перенести только формулы и форматы
 
Спасибо. Это самое то.
Перенести только формулы и форматы
 
А как скопировать только формулы-то? Мне ничего на ум не идет кроме как копирнуть лист, включить отображение формул вместо значений и чистить вручную. Но это для серьезной таблицы - не вариант.
Перенести только формулы и форматы
 
Цитата
Я думаю, что необходимо отдельно копировать формат и отдельно формулу.

Не получается. Все равно цифры лезут.
Перенести только формулы и форматы
 
Цифры стоят без равно. См. приложенный файл.
Перенести только формулы и форматы
 
В А1 у меня 1, в А2 - 2. В А3 - сумма А1 и А2.
Выделяю А1-А3. Копирую.
Иду на новое место. Специальная вставка / формулы и форматы чисел.
Вставляет почему-то с цифрами. Т.е. из А1 и А2 тянет цифры.

Помогите, пожалуйста.
Версии файла
 
Забыл детали. Достигается щелчком правой кнопкой - свойства.
Версии файла
 
Сегодня обнаружил, что могу просматривать версии своего файла.  
 
Во-первых, это может быть удобно. Во-вторых, тут вопросы безопасности - дабы не раскрыть кому-то конфиденциальную информацию.  
 
В общем, обнаружил такое свойство. И сразу попробовал на других файлах. Иногда версий нет (т.е. список версий пуст). А иногда вкладка с версиями вообще не доступна.  
 
Не могли бы Вы подсказать, от чего это зависит.
В текстовой строке определить место символа.
 
Неудачно получилось, извините, пожалуйста. Чтобы грамотно задать вопрос тоже нужно достичь определенного мастерства.
В текстовой строке определить место символа.
 
Len не удобен, т.к. это был условный пример. В реале у меня символ стоит в середине строки неизвестной длины.  
 
vikktur, ваш простой вариант не могу раскусить. Не могли бы Вы прокомментировать. Почему нужен мин, почему фигурные скобки, почему нужно сцепить А1 и KJP?
В текстовой строке определить место символа.
 
Хочу в строке определить место символа, обозначающего поставщика. Поставщиков условно трое. Символы - J, K, P. Затрудняюсь скомбинировать функции FIND и OR.    
Офис английский 2003.
Бегунок и цифровая подпись
 
Хочу реализовать вот это:  
 
1. Один или два сотрудника готовят служебную записку, подписывают ее. В записке обозначен бюджет.  
2. Отдают на подпись начальнику своего отдела.  
3. Подписывает главбух.  
4. Подписывает директор.  
 
Затем сотрудник расходует бюджет и фиксирует все свои затраты.  
 
В бумаге уже устали.  
 
Присматриваюсь к цифровой подписи. Цифровая подпись к Excel-файлу, в принципе, прицепляется. Да вот беда - цифровая подпись возможна только одна. Цифровая подпись означает, что документ не изменился ни на один бит. Т.е. множественные подписи невозможны.  
 
Не могли бы Вы посоветовать мне что-нибудь?
Разобраться с функцией TEXT
 
Офис у меня английский 2003.  
 
Хочу из даты получить текстовое:  
19 апреля 2012 г., а в другйо ячейке April 19, 2012  
 
Не получается почему-то.  
 
Кроме того, возникли вопросы:    
1. Почему разделитель у меня точка с запятой? По мануалу запятая должна быть.  
2. Почему формат пытается доминировать в таблице - он может отображаться прямо в ячейке - dd.mm.yyyy. Или иначе (как на скриншоте). Но, тем не менее, формат - бывает - попадает в отображаемый результат работы формулы.  
3. Почему на скриншоте цифра вклинилась в мясо - раздвинув формат. Справа-слева я бы еще понял. Этот вопрос - конечно, не глобальный, но, может быть, поможет понять суть этой формулы.
Импорт из 1С в Excel
 
Не. Продажники задают цены в своей программе. В 1С мы обработкой затягиваем все данные для заказа (цена, количество и т.д.). Поэтому экспортировать никакой возможности нет. В 1С просто нет этих данных на тот момент, когда менеджер хочет 1С-очный счет. Так что мы у них тянем - это нормально. А теперь пусть они у нас тянут. Хочу, чтобы они именно тянули. Через xml или еще как. Пусть тянут.    
 
Теоретически можно выгрузить заранее справочники. Контрагенты, наименования товаров. Но сколько раз можно так баловаться. Раз в месяц, а потом забудется. Т.е. я о том, что это чревато ошибками - информация не будет актуализирована на данную конкретную секунду.
Импорт из 1С в Excel
 
Менеджеры по продажам у нас работают в старой программе. Они продают товар, им обычно хватает такого инструмента. А логисты и бухгалтерия работают в 1С 8.2.  
 
Иногда попадаются такие клиенты, которым не нравится форма счета, которую выставляют менеджеры. Действительно, она, конечно страшненькая.  
 
Собственно говоря, менеджеры договариваются о сделке, шлют логисту номер счета. Логист запускает обработку в 1С и подтягивает данные из старой программы.  
 
Все работает нормально. Я - логист, и вот устал я менеджерам слать эти счета. Один-два счета в день, а все равно это нерационально. 1С у нас менеджерам руководство не купит.  
 
Я бы хотел сделать шаблончик. Там шапка, подвал и поле для ввода номера счета. Макрос делает импорт из 1С и сохраняет новый файл с именем - номер счета + наименование покупателя.  
 
Не могли бы Вы мне дать подсказку, как организовать такой импорт. И где почитать.
Копирование ячейки и передача значения по ссылке.
 
Забыл файл-то приложить, извините.  
 
Не совсем понял Вашу мысль. Можно на примере?
Страницы: 1 2 3 4 5 След.
Наверх