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

Страницы: 1
Отбор уникальный значений в столбце с сортировкой
 
Спасибо огромное, у вас гораздо лучше получилось!! Супер
Отбор уникальный значений в столбце с сортировкой
 
В целом, конечно, топорно, но вроде получилось, что требовалось, с двумя вспомогательными столбцами. Если будут идеи, как сделать более красиво, буду рад помощи!)
Изменено: Дмитрий Попов - 27.11.2021 14:53:21
Отбор уникальный значений в столбце с сортировкой
 
Цитата
написал:
PowerQuery или MSQuery рассматриваются?
PowerQuery можно попробовать
Версия MS Excel 2016
Я просто пробовал через Наибольший и просто добавлять значение для k элемента, но т.к. список значений не уникальный, то 2-3-4 и т.д. вплоть до нескольких тысяч может быть одно и тоже число k
Отбор уникальный значений в столбце с сортировкой
 
Добрый день. Буду благодарен за помощь или любой совет, т.к. после нескольких часов мучений, не смог прийти к решению.

Дано:
Лист 1, содержащий в себе столбец с датами
Лист 2, на который нужно в желтые ячейки заполнить уникальные значения этих дат с сортировкой от самой ранней даты

Нужно решение:
-без макросов
-без формул массива (т.к. строк крайне много и обновление формулы при замене данных будет затормаживать работу файла)
-без решения способом: удалить дубликаты, т.к. необходимо, чтобы при замене данных желтые ячейки сами пересчитывались без дополнительных действий со стороны пользователя
-можно добавлять на лист 1 вспомогательные столбцы в случае необходимости

Заранее благодарен за совет в решении задачи
Изменено: Дмитрий Попов - 27.11.2021 14:29:42
Передача из Sub Label_Click значения
 
Работает, спасибо большое!! Выручили)
Передача из Sub Label_Click значения
 
Прикладываю файл примера
Двойной клик на желтых полях запускает UserForm, клик на Label1 должен был привести к тому, чтобы в ячейку, на которую дважды кликнули встало значение "1"
Изменено: Дмитрий Попов - 02.04.2021 10:36:11
Передача из Sub Label_Click значения
 
Исходник не могу залить, вопросы от службы безопасности компании будут, постараюсь на чистом документе воспроизвести чуть позднее
Передача из Sub Label_Click значения
 
Добрый день.
К сожалению поиск не помог, обращаюсь за помощью

Вопрос не сложный, но что-то не получается решить уже долго:(
В таблице Эксель, есть обработчик двойного клика на ячейке в определенном столбце (Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Код
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Not Intersect(Target, Range("Таблица[[#ALL],[Столбец]]")) Is Nothing Then
        Dim Theme_Number As Integer
        Theme_Number = 0
        UserForm1.Show
        If Not Theme_Number = 0 Then Target.Value = Theme_Number
        Cancel = True
        Exit Sub
    End If
End Sub           
Мне необходимо, чтобы в UserForm1 пользователь нажимал дважды на Label и определенное значение записывалось в Theme_Number, можно значение Label, можно задать самостоятельно, здесь не так важно.
Я прописываю обработчик события клика на Label
Код
Private Sub Label1_Click()
    Dim Theme_Number As Integer 'потому что он начинает ругаться, если я не объявлю переменную
    Theme_Number = 1
    Unload Me
End Sub
'и так далее на каждый, нужный мне Label
Private Sub Label2_Click()
    Dim Theme_Number As Integer 'потому что он начинает ругаться, если я не объявлю переменную
    Theme_Number = 2
    Unload Me
End Sub
Проблема в том, что после выхода из Sub с Click и возврате в первый блок, не вытягивается значение Theme_Number и соответственно проверку последующую не проходит корректно.

Буду очень благодарен за помощь
Изменено: Дмитрий Попов - 02.04.2021 09:54:22
Рейтинги сотрудников каждого отдельного города и региона
 
Гениальная формула, спасибо большое)
Ломал голову, как в РАНГ вставить условие, а оказалось РАНГ вообще можно не использовать в таком случае!
Выпадающий список в умной таблице по условию
 
Спустя время появилась потребность добавить срабатывание выпадающего списка при совпадении ещё одного условия и выпадающий список должен для второго условия выдавать свои значения. Отрыл поиском эту темку, в которой и взял решение, оставляю, на случай если у кого-то будет схожая ситуация
Выпадающий список в умной таблице по условию
 
Я сначала не понял, что за "Комм", увидел в "Формулы" "Диспетчер имен" уже после того как написал.
Попробовал в сводную добавить ещё значения, вроде работает, спасибо, завтра попробую перенести на боевую модель:)
Выпадающий список в умной таблице по условию
 
У меня формула
Код
=ЕСЛИ($А2="Яблоко";Справочник!C$3$:C$6$;)

Без умной таблицы работает, как мне нужно, я не могу только правильно обратиться к значениям умной таблицы, выдает постоянно ошибки:(

Ігор Гончаренко

Только я не понял, как вы решили задачу? Но есть идеи, погуглю, спасибо!)
Изменено: Дмитрий Попов - 18.03.2021 15:04:33
Выпадающий список в умной таблице по условию
 
Цитата
Ігор Гончаренко написал:
если выпадающий список пустой - вы НИЧЕГО не сможете внести в ячейку
Почему? В "Проверке данных" во вкладке "Сообщение об ошибке" убираете галочку "Выводить сообщение об ошибке" и соответственно при пустом выпадающем списке я могу как угодно редактировать ячейку
Выпадающий список в умной таблице по условию
 
Всем привет. Пол дня голову ломаю, весь раздел поиск измучал уже, гугл тоже не помогает.
Обращаюсь к вам за помощью.
Суть задачи в следующем.
1. Есть Умная таблица основная, в которой нужно в определенном столбце настроить выпадающий список
2. Есть Умная таблица со значениями для выпадающего списка, обязательно умная, чтобы значения в будущем можно было без корректировок дополнять
3. Задача состоит в следующем, если столбец А заполнен определенным значением (Яблоко), то в столбце Б выпадающий список из значений второй умной таблице
Если в столбце А значения отличные от определенных заранее (Яблоко), то выпадающего списка нет вообще, либо он пустой.

Я смог реализовать задумку в рамках обычных значений, без использования умных таблиц, если у меня не "Яблоко" в столбце А, то справа от ячейки кнопка выпадающего списка есть, но он не открывается, т.к. пусто по значениям, даже такая реализация в случае с умными таблицами, меня бы устроила, но если можно вообще не сложно отключить выпадающий список если не то значение, что нужно в соседней ячейке, то будет вообще супер (рассматриваю макросы).
Без умных таблиц в проверке данных выбрал Список и прописал:
Код
=ЕСЛИ($А2="Яблоко";Справочник!C$3$:C$6$;)
И в блоке "Сообщение об ошибке" убрал галочку вывода сообщения.
Таким образом, у меня при определенном значении (Яблоко) выпадающий список выводится и я могу выбрать, в т,ч. и дополнить выбранное (так и нужно), а если значение в вспомогательной ячейке не соответствуют (Яблоко), то выпадающий список пустой и есть возможность самостоятельно заполнить поле

Помогите реализовать формулу с использованием умных таблиц, пожалуйста? Это очень важно, потому что таблица, в которой будут работать, она с помощью PowerQuery выгружается каждый раз разной высоты, строк может быть 100, а может быть 1500, мне нужно, чтобы обращалось к наименованию столбца умной таблицы, а не к определенным ячейкам.
Пример во вложении, спасибо
Изменено: Дмитрий Попов - 18.03.2021 14:21:29 (Вложение)
Переслать письмо Outlook вложением
 
Решил самостоятельно. В VBA синтаксис крайне важен)
Так не подходит:
Код
.Attachments.Add (myMsg(i))
А вот так подходит:
Код
.Attachment.Add myMsg(i)

пол дня просидел :cry:  
Переслать письмо Outlook вложением
 
Добрый день.
Обращаюсь к вам за помощью, т.к. перерыл уже весь интернет, нужного мне решения найти не могу, хотя, как мне кажется, решение простое.
Мой макрос из Excel осуществляет поиск письма в определенной папке Outlook по дате письма и Conversation ID, после того как нужное письмо находит, где совпадают оба условия, необходимо, чтобы макрос создал новое чистое письмо и с помощью вложения, прикрепил туда найденное ранее письмо Outlook

Пробовал вариант:
Код
.Attachments.Item(mymsg(i))
Но пишет, что не соответствуют Типы
Через
Код
.Attachments.Add 
тоже разные вариации попробовал, ничего не получается:(
Отправка письма с другого почтового аккаунта Outlook - VBA
 
Добрый день.
Подскажите, пожалуйста.
Если я делаю не новое письмо, а прогоняю процедуру пересылки (.Forward) найденного в почте мной письма, то не получается выбрать ящик с которого отправлять письмо
Привожу часть кода
Код
Set maillist = objnamespace.Folders("xxxx@mail.ru").Folders("Имя папки, в которой будем искать письма").Items
Rectime = "сюда вытягиваю из ячейки Excel время письма"

e = Format(Rectime, "ddddd hh:mm")
e = Format(DateAdd("n", -1, e), "ddddd hh:mm")
e1 = Format(DateAdd("n", 2, e), "ddddd hh:mm")
strfilter = "[ReceivedTime]>'" & e & "' and [ReceivedTime]<'" & e1 & "'"
Set filtered_items = maillist.Restrict(strfilter)
fitems = filtered_items.Count
If fitems >0 Then
    For i = 1 To Fitems
        If filtered_items(i).ConversationID = "ссылка на ячейку Excel" And Rectime = Cstr(filtered_items(i).ReceivedTime) Then
            Set olreply = filtered_items(i).Forward
            With olreply
                .SentOnBehalfOfName = "yyy@mail.ru"
                .To = "yyy@mail.ru"
                .Subject = "Тема письма"
                .Send '.Display
            End With
        End If
    Next
Else
    MsgBox "Письмо не найдено в папке Обработанные"
    Cancel = True
    Exit Sub
End If

Т.к. поиск письма осуществляется на технологическом почтовом ящике (ТПЯ), то по умолчанию пересылка производится с него же
С помощью SentOnBehalfOfName значение отправителя меняется (это видно с помощью .Display), но при отправке письма, фактически оно всё равно приходит от имени ТПЯ, а не "yyy@mail.ru"

В чем может быть проблема? может необходимо какой-то другой параметр менять? Подскажите, пожалуйста
Т.е. фактически SentOnBehalfOfName работает, только если создается новое письмо, а не пересылается другое
Изменено: Дмитрий Попов - 10.02.2021 10:58:50
Как в VBA сравнить текущее время с определенным.
 
Добрый день. Вопрос по теме.
Будет ли корректно работать макрос сравнения текущего времени с заданным, если я сделаю сравнение по примеру:
Код
if Time > TimeValue("23:00:00") And Time < TimeValue("06:00:00")

Т.е. ночью мне необходимо, чтобы в данный if заходила проверка

VBA Excel выявление последнего письма в папке Outlook
 
Добрый день. Ещё раз благодарю за помощь) Получилось всё настроить гораздо проще чем было до этого
Итоговый код получился следующий (попробовал вытащить именно часть, о которой писал в своем запросе):

Код без циклов проверяет наличие за последний час поступивших сообщений в определенную папку в почте, ранее я это делал циклом For, который чекал каждое письмо, вытаскивал из него дату и время поступления и если дата и время соответствовали периоду 1 час, то прибавлял для обнуленной константы +1 и соответственно по выходу из цикла проводилась проверка константы, если она не равна 0, то письма были, всё ок. Такой способ не оптимален, ввиду того, что фактически меня интересует последнее направленное письмо по дате и всё, если в папке 1000 или 100000 писем, то код будет исполняться зря)
Код
Sub CheckReport 
    Dim olApp As Outlook.Application, objnamespace As Namespace
    Dim mail_name As String
    Set olApp = New Outlook.Application
    Set objnamespace = olApp.GetNamespace("MAPI")
    mail_name = ThisWorkbook.Worksheets("Список").Cells(2,2) 'название ящика считывается из ячейки в файле Excel
    Set items_post_tf = objnamespace.Folders(mail_name).Folders("Отчеты") 'наименование папки в ящике, в которой будем смотреть письма
    Set items_mail_tf = item_post_tf.Items
    
    CheckTime = Format(DateAdd("n", -60, Now()), "dddd hh:mm") 'Считаем минус 1 час от текущего времени, для установки фильтра
    strfilter = "[ReceivedTime]>'" & CheckTime & "'" 'параметры фильтра, который будет применяться к папке значение времени поступления письма больше CheckTime
    Set filtered_items = items_mail_tf.Restrict(strfilter) 'применение фильтра по параметрам выше
    CounterTF = filtered_items.Count 'подсчет количества писем удовлетворяющих условию
    If CounterTF = 0 MsgBox "Новые отчеты в течение часа не поступали"
End Sub
Изменено: Дмитрий Попов - 29.01.2021 10:06:18
VBA Excel выявление последнего письма в папке Outlook
 
Цитата
Дмитрий(The_Prist) Щербаков написал:
Главное, правильно составить строку отбора. Какие-то примеры есть и в интернете. Вам, скорее всего, нужен такой запрос:
Добрый день, спасибо за быстрый ответ.
Т.е. я сначала ограничиваю массив данных с помощью поиска по дате, а уже внутри этого массива осуществляю перебор писем. В моем случае вообще не так важно осуществлять перебор писем в этом массиве, главное, чтобы Count по ним был больше 0, если я задам условия поиска за последний час от текущего времени.
Спасибо огромное, буду пробовать, такие примеры видел, не пришло сразу в голову
VBA Excel выявление последнего письма в папке Outlook
 
Всем добрый день.
Подскажите пожалуйста, есть ли способы макросом выявить последнее (по времени) поступившее письмо в конкретную папку Outlook?

Глобально, мне необходимо, чтобы макрос проверял, что в указанной ему папке как минимум за последний час присутствовали письма (туда автоматизированно поступают отчеты о работе другого макроса)

Я реализовал это перебором всех писем в папке и если письмо прислано за последний час, то +1 к объявленной константе, собственно, если константа по выходу из цикла равна 0, то писем за последний час не было и макрос об этом оповещает.

Но данный способ не очень оптимален, если в папке будет 5000 писем, мне по факту то нужно последнее по времени пришедшее.

Возможно есть какой то способ определять макросом самое верхнее письмо, но тогда как поведет себя макрос, если у него в Outlook будет стоять сортировка не по дате, или можно перед началом перебора цикла существует какая то функция, которая правит сортировку папку, т.е. ставить макросом сортировку по дате, загонять цикл перебора не всех писем, а с первого по 5, например

Буду благодарен за любую помощь и совет
Свой код не прикладываю, потому что очень сложно вычленить именно ту часть, о которой идет речь из структуры большого макроса
Изменено: Дмитрий Попов - 28.01.2021 14:34:26
Страницы: 1
Наверх