Выбрать дату в календареВыбрать дату в календаре

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

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

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

Это возможно?
Как поймать 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.08.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/"

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

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

Удаление дубликатов: я хочу оставить все падежи
 
Excel 2007

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

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

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

Скажите, пожалуйста, что можно предпринять? Удалить дубликаты как-нибудь настраивается?
Перебрать в цикле значения из диапазона, если диапазон составляет одну ячейку
 
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.06.2018 00:34:33
Найти 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
 
Нет опыта программирования на 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 тянет цифры.

Помогите, пожалуйста.
Версии файла
 
Сегодня обнаружил, что могу просматривать версии своего файла.  
 
Во-первых, это может быть удобно. Во-вторых, тут вопросы безопасности - дабы не раскрыть кому-то конфиденциальную информацию.  
 
В общем, обнаружил такое свойство. И сразу попробовал на других файлах. Иногда версий нет (т.е. список версий пуст). А иногда вкладка с версиями вообще не доступна.  
 
Не могли бы Вы подсказать, от чего это зависит.
В текстовой строке определить место символа.
 
Хочу в строке определить место символа, обозначающего поставщика. Поставщиков условно трое. Символы - 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С 8.2.  
 
Иногда попадаются такие клиенты, которым не нравится форма счета, которую выставляют менеджеры. Действительно, она, конечно страшненькая.  
 
Собственно говоря, менеджеры договариваются о сделке, шлют логисту номер счета. Логист запускает обработку в 1С и подтягивает данные из старой программы.  
 
Все работает нормально. Я - логист, и вот устал я менеджерам слать эти счета. Один-два счета в день, а все равно это нерационально. 1С у нас менеджерам руководство не купит.  
 
Я бы хотел сделать шаблончик. Там шапка, подвал и поле для ввода номера счета. Макрос делает импорт из 1С и сохраняет новый файл с именем - номер счета + наименование покупателя.  
 
Не могли бы Вы мне дать подсказку, как организовать такой импорт. И где почитать.
Копирование ячейки и передача значения по ссылке.
 
Был удивлен, но если сделать копирование, то информация передается по ссылке.  
В А2 у нас формула макс(B:B)+1. Смотрите: копируем А2, идем в столбец В, делаем специальную вставку, values. И так в цикле - 10 раз.  
 
При этом вставляется не 10 раз значение, бывшее в ячейке А2 на момент копирования, а каждый раз уже приращенное значение.    
 
Чтобы зафиксировать значение, мне придется присвоить его переменной. И уже потом вставлять 10 раз.  
 
Можно ли найти более элегантное решение?
Как изменять range в цикле?
 
Делаю базу данных. Чур, не пинать за то, что она не подчиняется правилам нормализации.  
Вопрос в другом.  
 
Программа может обрабатывать до 10 накладных. Надо просто сохранить информацию в реестре, а затем выводить ее в виде печатной формы (лист "Печатная форма"). Вся печатная форма  у нас будет представлять одну отгрузку.  
 
Моя идея такова. Отгрузке присваиваем номер. В данном случае он у нас в реестре выделен красным. Из исходной таблицы (лист "Подготовка") берем данные поочередно о партиях (данные в столбцах, ориентируемся на номера по порядку), переносим все в реестр, транспонируем, вставляем. Затем из реестра будем выдеркивать функцией ВПР.  
 
Вроде бы, все просто:    
1. Поставил курсор на А1.  
2. В цикле:  
  1) сместился на ячейку вправо.    
  2) взял в память область шириной в один столбец, высотой 17 рядов.  
  3) перешел на лист "Реестр", поставил курсор на нужную ячейку.  
  4) вставил значения с транспонированием.  
  5) вернулся на лист "Подготовка".  
 
Да вот беда, затрудняюсь такой цикл организовать. Смотрю на Range, а он, кажется, оперирует только областями вида B1:B17. И как же мне прогнать в цикле дальше - С, D и т.д. до К?
Indirect и ссылка на ячейку в другом файле
 
Есть файл с данными дилеров. В другом файла на я в ячейку    
ввел имя файла с данными дилеров. Присвоил этой ячейке имя Dealers.  
 
И теперь хочу получить данные из упомянутого файла, а там еще с указанного листа.  
Вроде бы, надо через indirect. Но не получается.  
 
Помогите, пожалуйста.
Памятка
 
Хочу сделать памятку: при закрытии книги пользователь перенаправляется на лист "Памятка".  
Если пользователь подтверждает свое желание выйти, то - соответственно, выходим.  
 
Если же пользователь от вида памятки возбудился, то не закрываем файл, а перенаправляем пользователя обратно на лист "Рабочая база".  
 
Пытаюсь использовать обработку события Workbook_BeforeClose.  
 
Но столкнулся с ситуацией, что не закрывать файл в этом случае я не могу. Т.е. файл-то все равно закрывается, видимо, потому что событие - before close.    
 
Помогите, пожалуйста, разобраться.
Учесть разницу во времени и округлить в большую сторону с шагом в четверть часа
 
Не могу разобраться.  
Задача - посчитать фактическое время работы и округлить его в большую сторону с шагом в четверть часа.    
 
Выбрал формат ячейки - (все форматы), задал формат: ч:мм  
Соответственно можно теперь эффективно получать разницу во времени в часах и минутах.  
 
В примере мы получаем 1:12.    
 
Однако, теперь формат становится не удобен. Потому что полученное время надо округлять в большую сторону с шагом в четверть часа. А потом еще умножать на тарифную ставку.  
 
Соответственно, оплачиваемое время хочется иметь в числовом формате (в нашем примере - это будет 1,25).  
 
Могу решить эту задачу путем пространных вычислений: вычленения минут, округления их в большую сторону и т.д. Но подозреваю, что это нерационально.  
 
Был бы очень признателен за совет.
Значение по умолчанию для связанных списков
 
Есть связанные списки. Чищу содержимое макросом (проверку данных осталяем).  
Как сделать, значение по умолчанию для второго списка? Иными словами,  
условно, чтобы при выборе марки Toyota подставлялось Alteza, a Ford - Aspire.
Date Picker не умеет выдавать месяца по-русски
 
У меня офис 2003, руссифицированный.  
 
Как победить? Мне бы подошло и по-английски. Но кракозябры - не вариант.
Крашу/защищаю при открытии. Убираю заливку/защиту (ToggleButton) - ошибка.
 
Сабж, собственно.    
 
При открытии книги я защищаю лист и окрашиваю его.  
На листе "Справочник" есть кнопка "Защитить/Снять защиту" . Первый раз после открытия нажатие на кнопку вызывает Run-time error 1004. Нельзя установить ColorIndex класса Interior.  
 
Если завершить работу макроса, то потом можно пользоваться указанной кнопкой без проблем.  
Как победить?  
 
Попутно. Когда снимаю защиту и убираю заливку указанной кнопкой, то белеет только первый ряд и ячейка А2. Почему?
Выбор уникальных значений из списка (макросом)
 
Есть перечень на листе "Справочник". А уникальные значения переносим на лист "Справочник1".  
 
Подскажите, пожалуйста, почему у меня идет дублирование первого элемента в списке на листе "Справочник".  
 
Заранее спасибо.
Как найти вхождение
 
Есть два столбца, они отличаются на один-два символа.    
Иногда символ добавляется в первый столбец, а иногда-во второй.  
Затрудняюсь вычленить общую часть.
Печать конвертов: как научить принтер попадать на маленький конверт
 
Автоматизировал себе печать конвертов. Доволен. Да вот незадача. Раньше был у меня HP 3390, а в новом офисе HP 1320n. Не могу настроить вывод конверта на печать, чтобы попадать точно на конверт. У меня поле «Кому» вообще не видно. А поле «Куда» попадает в середину конверта.  
 
Иными словами, я сделал реестрик, а из него выдергивается информация в печатную форму (см. приложенный файл). Подходим к принтеру, направляющие в лотке полистовой подачи выставляем по узкой стороне конверта. И вперед. Прямо не задумываясь жмем кнопку печати. Так было раньше. А тут – не могу никак. Играл с полями, размерами рядов, колонок, ячеек. У принтера почему-то такой драйвер, что не задать C5, a custom size в Excel нет.  
 
Можете ли вы что-нибудь мне посоветовать?
Конкатенация (почему возникают пробелы)
 
Программа регистрации заявлений.  
Скан-копия должна быть положена в соответствующий создаваемый автоматически каталог.  
 
Если запустить макрос кнопкой New Application, то формируется номер как комбинация номеров из столбцов А-B-C-D. Для работы макроса нужно выбрать ответственного в верхнем выпадающем списке (PiC). Остальное можно не задавать.  
 
Осторожно: прога плодит директории в каталоге C:  
 
Не могу разобраться, почему возникают пробелы после дефисов.  
Т.е. директория формируется вот в таком ключе: 21- 21- 0-ADM. Как искоренить?
Выпадающие списки (не могу победить delimited list)
 
Посмотрите, пожалуйста, пример.  
 
Хочу сделать, возможность задания:  
1) компании,    
2) кому вручить  
А вот телефон должен сам подставляться.  
 
Да вот беда - что делать с т.н. delimited list? Надо как-то изменять табличку или я не прав?
Условное форматирование (?)
 
Предыстория (не вошло в пример).  
Маркетинг. С сайтов интернет-магазинов копируется информация. И строится сводная таблица: модель, цена.  
Иначе говоря, есть интересующих список моделей. Смотрим - модель совпала, значит в следующей ячейке стоит цена.    
 
Проблема:  
Магазины часто предлагают комплекты.  
Например, возьмем электронику. Интересует информация на какой-нибудь адаптер Bluetooth, красная цена которому 5 тысяч. А он идет в комплекте с автомобильной навигационной системой, которая стоит 50 тысяч. Описанный выше алгоритм посмотрит название модели, возьмет цену из соседней ячейки и выдаст примерно 55 тысяч. Не годится. И автоматически отсечь лишнее вряд ли удастся (чай, не искусственный интеллект).  
 
Мозговой штурм:  
Нужен черный список. Вот этот магазин предлагает такие-то комплекты. И если модель в черном списке, то надо просто всю строку выделить цветом.  
 
Вернемся к файлу с примером:  
 
На листе "Исходные данные" есть черный список: модель и что в комплекте.  
В нашем случае магазин Drv Mystery MCD-585MPU в комплекте с iPad, а  
Mystery MCD-664MPU в комплекте с антенной.  
 
На листе "Сводная_Таблица" собрали цены. И есть аналог автофильтра - механизм схлопывания колонок, оставляя данные только по одному магазину.  
 
Не могу сделать так, чтобы когда я схлопну лишние колонки, все строки с моделями из черного списка подсвечивались красным.  
 
Был бы очень признателен за помощь.
Очистить ячейку от мусора и получить число
 
Собираю ценовую информацию с сайтов. Она бывает представлена в виде текстового выражения.    
 
Затрудняюсь макросом удалить из ячейки все кроме сути. Мешают буквы, пробелы, невидимые символы (см. А2-А4), разделители разрядов. Десятичный раздетилель может быть в виде точки или запятой. Тоже затрудняюсь с ним что-то сделать.    
 
Дробную часть надо сохранить. Т.е. получить нормальное число с двумя знаками после запятой.
Справочники, клики, два примера
 
Хочу сделать переключатель: при нажатии на гиперссылку в соседней ячейке поднимается флажок - вот этот ряд выбран. Плюс еще целый ряд моментов описан в примере.
Безоговорочно удалить лист
 
Когда удаляем лист, получаем запрос на подтверждение - там могут быть данные, подтвердите намерение удалить.  
 
Хочу, чтобы не спрашивало. Это возможно?
Страницы: 1 2 3 След.
Наверх