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

Страницы: 1
При переключении между серверами данные на удолённом ресурсе не сохраняються в Excel
 
Привет, Всем

Нужен ваш совет. Как быть в следующей ситуации.
Есть хранилище на котором сохранён файл Excel с возможностью совместной работы.
Когда пользователи заходят в этот файл с рабочего места данные сохраняються.
В случае удалённой работы доступ к файлу есть но данные переодически не сохраняються, пропадает доступ к файлу и пропадает возможность совместной работы.

Что можно сделать в таком случае?
[ Закрыто] Перенос строк с форматированием и формулами конечного файла
 
Привет, Всем

Есть файл Tool - EXCHANGE.xlsm который с помощью макроса по условию после нажатия кнопки"ЗАКУПКИ==>СНАБЖЕНИЕ" переносит строки из файла База закупки в База – Снабжение.
Сейчас перенос строк выполняется как значение, что создаёт дополнительную работу.

Нужно чтобы перенос осуществлялся с конечным форматированием и формулами. То есть если мы переносим данные по направлению из База -закупки в База – Снабжение нужно что бы данные форматировались и добавлялись формулы как в конечном файле База -Снабжения.
Обратный перенос данных также должен быть с учётом форматирования и формул в Базе – закупок.

Основная проблема в том, что сейчас после переноса данных между файлами приходиться ещё тратить время на форматирование и добавление формул.
Помогите дописать макрос чтобы данные переносились с добавлением форматирования и формул


Добавляю файлы по ссылке
Изменено: Mutarix - 13.02.2020 16:52:14
Выборка данных по нескольким условиям отбора
 

Привет, всем

Есть макрос которые делает выборку по нескольким параметрам.

Таблица 1 = База.xlsx
Таблица 2 = Tool - REQUEST.xlsm


Нужно добавить ещё один параметр отбора:

В таблице 2 куда нужно выгрузить данные есть выпадающий список который определяет параметр отбора (локация):

- Все локации
- Локация1
- Локация2

В таблице 1 от куда будет выполняться отбор есть столбец Локация в котором записаны значения соответствующие каждой из локаций.

- КМК
- КМК В
- КМК С
- ПК1
- ПК2

Нужно выгрузить строки в зависимости от выбранной локации в таблицу 2

Если в таблице 2 выбран параметр "все локации" то выгружаем все строки из таблицы 1
Если в таблице 2 выбран параметр "Локация1" то выгружаем строки из таблицы 1 со значениями "КМК В"
Если в таблице 2 выбран параметр "Локация2" то выгружаем строки из таблицы 1 со значениями "КМК, КМК С, ПК1, ПК2"

В Таблице 2 в коде я начал реализовывать этот отбор но, что то не получается. Моя реализация залочена в коде.

Прошу помочь подкорректировать мой код или предложите ваш вариант.

Изменено: Mutarix - 28.08.2019 13:42:40
Ассоциативный поиск текста с частичным совпадением
 

Добрый день, Друзья

Подскажите пожалуйста есть ли возможность сделать формулу которая будет подбирать Поставщика для определенной номенклатуры, из таблицы где есть номенклатура и поставщик, но подбор должен быть не по точному совпадению, а частичному совпадению.
То есть поиск всех похожих номенклатур. Результат поиска должен быть в выпадающем списке. Ищем по номенклатуре, а выпадающем списке перечень Поставщиков.

Я смог реализовать эту задачу только по точному совпадению текста, следующим образом:
Есть список номенклатур, для которых подбирается точное совпадение, из второго списка с помощью функции ВПР.
ВПР(A2;ТМЦ!$A$2:$B$3387;2;ЛОЖЬ)
ВПР находит первое совпадение из таблицы с номенклатурами и поставщиками и вставляет в ячейку рядом с ячейкой номенклатур наименование поставщика.

Также в этой ячейки встроен выпадающий список в котором формируется список поставщиков которые точно соответствуют номенклатуре.
Выпадающий список реализован  следующим образом:
Список ссылается на именованный диапазон, имя Поставщик.
Список для именованного диапазона формируется по формуле: СМЕЩ(ТМЦ!$A$1;ПОИСКПОЗ(БазаЗакупки!H10;ТМЦ!$A$2:$A$2786;0);1;СЧЁТЕСЛИ(ТМЦ!$A$2:$A$2786;БазаЗакупки!H10);1)

Пример во вложенном файле.
Важно реализовать эту задачу с помощью формул. Основная задача, что бы осуществлялся поиск похожих Номенклатур.

Формирование массива по критерию с выборкой данных из него по условию
 
Всем, привет

На первый взгляд показалась лёгкая задача но когда принялся делать появились сложности.

Задача в том, что бы из таблицы в которой записаны события вытащить по определённым критериям дату начала этого события (дату отправки на согласование) и дату окончания события (дату согласования).
Вытаскиваем дату согласования только если последние событие будет иметь статус "Согласовано" или "Не требует согласования"  в противном случае вытаскиваем фразу из последнего статус (копируем значение ячейки статус)

В файле есть рядом две таблицы.
Первая таблица А1:С50 содержит не уникальный список событий (Заказы) напротив которого дата этого события (Период) и статус события (статус)

Вторая таблица Е1:G11 содержит уже уникальные события (Заказа) взятые из первой таблице (то есть взят весь список событий и удалены дубли после чего вставлен во вторую таблицу)  напротив каждого события "Дата отправки на согласования" и "Дата согласования"

Пример:
ЗаказПериодСтатус
Заказ   поставщику WB-ЦБ\ЗПС-000009 от 02.01.2018 11:14:3602.01.2018 11:14:37Ожидание   синхронизации
Заказ   поставщику WB-ЦБ\ЗПС-000009 от 02.01.2018 11:14:3602.01.2018 11:21:09На согласовании
Заказ   поставщику WB-ЦБ\ЗПС-000009 от 02.01.2018 11:14:3603.01.2018 12:24:35Согласован
.
.
Результат:
Заказ уникальныйДата отправки на согласования Дата согласования
Заказ поставщику WB-ЦБ\ЗПС-000009 от 02.01.2018 11:14:3602.01.2018 11:21:09

03.01.2018 12:24:35

Дата отправки на согласование - находит по номеру заказа первый статус "На согласование" и вставляет дату
Дата Согласование - находит последний статус "Согласовано" или "Не требует согласование" и вставляет дату, в противном случае вытаскиваем фразу из последнего статус (копируем значение ячейки статус)
Изменено: Mutarix - 17.08.2018 14:36:50
Перенос строк с данными между файлами по критерию, Есть управляющий с макросом который по критерию вырезает строки в одном файле и вставляет в конец другого файла
 
Добрый день, Друзья

Пытаюсь реализовать следующую задачу:
Есть управляющий файл "Tool - ОБМЕН" в котором размещён макрос для управления данными в файлах "База Вы", "База За" и "База Сн" по заданному условию.
Условие переноса данных при нажатии кнопки в файле "Tool - ОБМЕН" следующие:
1) При нажатии кнопки "Обмен: База За --> База Сн" из файла "База За" находим и вырезаем все строки у которых в столбце 29 содержится текст (2.Договор есть в 1С, 4.Выполнено) и вставляем в файл "База Сн" в конец таблицы.

Аналогично но с другим условием:
2) При нажатии кнопки "Обмен: База За <-- База Сн" из файла "База Сн" находим и вырезаем все строки у которых в столбце 29 содержится текст (1.Заключение договора) и вставляем в файл "База За" в конец таблицы.

Аналогично но с другим условием:
3)При нажатии кнопки "Обмен: База Сн --> База Вы" из файла "База Сн" находим и вырезаем все строки у которых в столбце 29 содержится текст (4.Выполнено) и в столбце 22 не пустая ячейка и вставляем в файл "База Вы" в конец таблицы.

Скрытый текст

Так же приложил файл который реализовывает подобную задачу только между листами внутри книги.
Подстановка значения по нескольким критериям, один из критериев: проверка содержится ли определённый символ в ячейке с текстом.
 
Привет, всем

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

Как работает:
В столбец "договор" подставляется договор из столбца "Договор список" по критериям значения которых в столбце "локация" и "поставщик"
Если в столбце "локация" значение КМК и в столбце "поставщик" вставлен один из списка в столбце "Контрагент список" то в столбец "договор" должен подставиться договор с признаком (К)

Дело в том что один поставщик (Пример: Поставщик 7) может иметь несколько договоров с признаками
(К) соответствует локации "КМК"  (Пример: договор 15 (К))
(Х) соответствует локации "ХМК" (Пример: договор 16 (Х))
ничего - соответствует всем остальным локациям (Пример: договор 17)

Для выполнения этой задачи используются промежуточные столбцы.
Поставщик   + локацияКонтрагентХМККМК
Нужно перестроить таким образом, что бы отпала необходимость в промежуточных вычислениях.
Подсчёт количества соответствующих нескольким критериям.
 

Привет, всем

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

Задача следующая:

Есть таблица с данными которая вычисляет:
 - разница "план" "факт" от 0-30, 31-60, >61 дней для всех позиций у которых статус "1.Заключение договора" и ответственный "Исполнитель 1"
 - разница "план" "факт" от 0-30, 31-60, >61 дней для всех позиций у которых статус "2.Договор есть в 1С" и ответственный "Исполнитель 1"

Определяет количество позиций для каждого значения Актуальных, просроченных, в срок:
- Актуальные - если дата план больше текущей даты, для статуса"1.Заключение договора" и "2.Договор есть в 1С"
- Просрочено - если дата план меньше текущей даты, для статуса"1.Заключение договора" и "2.Договор есть в 1С"
- В срок - если дата план меньше дата факт, для статуса "4.Выполнено"

Я смог это сделать путём добавления промежуточных столбцов "Выполнение, дней" и "Выполнено в срок", и сводной таблице (см. во вложенном файле)

Как можно сделать подобное вычисление макрос или формулами при этом не используя дополнительные вычисления (столбцы "Выполнение, дней" и "Выполнено в срок")

После отправки писем из Excel через Outlook нужно записать дату отправки в Excel.
 
Добрый день, друзья

Во вложенном файле Запрос - mail реализован макрос который выполняет создание и отправку писем через Outlook.
После запуска макроса формируются письма и таблицы, которые вставляются в тело письма.
После этого макрос делает запись текущей даты в таблицу БАЗА ЗАЯВОК 2018 в столбец AI напротив строки которая содержит код (№ Заявки).
То есть в таблице Запрос - mail есть сформированная таблица где каждая строка имеет код (№ Заявки),
макрос сравнивает код (№ Заявки) между таблицами "Запрос - mail" и "БАЗА ЗАЯВОК 2018" находит совпадение и делает запись в таблицу "БАЗА ЗАЯВОК 2018" в столбец AI.

Запись даты в таблицу "БАЗА ЗАЯВОК 2018" реализована в следующем коде:

Код
With iBook.Worksheets("База")        j = .Range("b" & .Rows.Count).End(xlUp).Row
 
        arr(0) = .Range(.[a1], .Range("ai1" & j)).Formula
          For i = 1 To UBound(arr(0))
             itxt = arr(0)(i, 2)
             If objDic.Exists(itxt) Then arr(0)(i, UBound(arr(0), 2)) = objDic.Item(itxt)
          Next i
 
       .Range("a1").Resize(UBound(arr(0)), UBound(arr(0), 2)).Formula = arr(0)
       iBook.Save
    End With

Макрос работает следующем образом:

Переносит все данные из таблицы "БАЗА ЗАЯВОК 2018" в массив присваивает даты и выгружает эти данные обратно.

Это очень ресурсозатратный метод, когда в таблице "БАЗА ЗАЯВОК 2018" больше 10 000 строк. Кроме этого по не понятной причини растёт размер файла, буквально удваивается.

Подскажите пожалуйста как изменить код, чтобы запись даты выполнялась без загрузки всех данных из таблицы "БАЗА ЗАЯВОК 2018" в массив, а выполнялся поиск нужной строки в "БАЗА ЗАЯВОК 2018" с последующей записью даты согласно кода (№ Заявки) заданного в таблице "Запрос - mail".  

или

Загружались в массив из таблицы "БАЗА ЗАЯВОК 2018" только те строки которые соответствуют коду (№ Заявки) заданному в таблице "Запрос - mail"

Изменено: Mutarix - 07.05.2018 11:08:44
Копирование диапазоны данных в рамках цыкла
 
Добрый день, Друзья

Описание кода:
1) Проверяет есть ли ошибки в диапазоне данных S10:S500 на листе "Лист1"
2) Просматривает диапазон данных S10:S500 на листе "Лист1" и выбирает только уникальные значения, записывает на этот же лист в ячейку начиная с "C10".
3) После проверки данных копирует все данные c листа "Лист1"  данные из диапазона I10:R500 и вставляем на лист "Order" в ячейки A2:J2

Подскажите как исправить код, что бы 3-й пункт реализации кода всё таки заработал.


Код
'--------------------------------------------------------------------------

Sub MassUnique()
    Dim myArr(), MassUnique()
    Dim cl As Range
    Dim ShtR As Worksheet
    Dim ShtA As Worksheet
    Dim S As Long
    Dim B As Long
    Dim A As Long
    Dim C As Long
    Set ShtR = Workbooks("mail.xlsm").Worksheets("Order")
    ShtR.Range("A2:J500" & WorksheetFunction.Max(4, ShtR.Cells(ShtR.Rows.Count, 1).End(xlUp).Row)).Value = "" 
    S = 1

    With Worksheets("Лист1")
            myArr = .Range("S10:S500" & .Cells(.Rows.Count, 1).End(xlUp).Row).Value
            For Each cl In .Range("S10:S500" & .Cells(.Rows.Count, 1).End(xlUp).Row)
                If IsError(cl) Then
                    MsgBox "Текст сообщения""Текст""", vbExclamation + vbOKCancel
                    Exit Sub
                   C = ShtA.Cells(.Rows.Count, 1).End(xlUp).Row
                    If C > 0 Then
                        For A = 1 To C
                          S = S + 1
                          ShtR.Cells(S, 1).Resize(1, 2).Value = .Range(.Cells(A, 10), .Cells(A, 11)).Value
                          ShtR.Cells(S, 3).Resize(1, 2).Value = .Range(.Cells(A, 12), .Cells(A, 13)).Value
                          ShtR.Cells(S, 5).Resize(1, 2).Value = .Range(.Cells(A, 14), .Cells(A, 15)).Value
                          ShtR.Cells(S, 7).Resize(1, 2).Value = .Range(.Cells(A, 16), .Cells(A, 17)).Value
                          ShtR.Cells(S, 9).Resize(1, 1).Value = .Range(.Cells(A, 18), .Cells(A, 18)).Value
                        Next A
                    End If
                End If
            Next
            '----------------
    End With

        MassUnique = UniqueValuesFromArray(myArr, 1)
        ActiveSheet.Range("C10").Resize(UBound(MassUnique)) = MassUnique
End Sub

Sub MassClear()
     Range("C10:C96").ClearContents 
End Sub
'---------------------------------------------------------------------------------------

Function UniqueValuesFromArray(ByVal Arr, ByVal col As Long) As Variant
Dim i As Integer

    If Not IsArray(Arr) Then MsgBox "Текст сообщения!", vbCritical: Exit Function
    If col > UBound(Arr, 2) Then MsgBox "Текст сообщения!", vbCritical: Exit Function
    If col < LBound(Arr, 2) Then MsgBox "Текст сообщения!", vbCritical: Exit Function

    On Error Resume Next: Dim coll As New Collection, txt$
    For i = LBound(Arr) To UBound(Arr)
         txt$ = Trim(Arr(i, col)): coll.Add txt$, txt$
    Next i
    ReDim newarr(1 To coll.Count, 1 To 1)
    For i = 1 To coll.Count: newarr(i, 1) = coll(i): Next i
    UniqueValuesFromArray = newarr
End Function
Проверка столбца с данными на ошибки с всплывающим сообщением MsgBox
 
Всем привет,
Пытаюсь реализовать проверку данных с всплывающим предупреждением MsgBox но, что то явно не учтено, прошу помочь решить эту задачу.
Код реализации следующий:

Код
Sub MassUnique()
    Dim myArr(), MassUnique()

    With ThisWorkbook.Worksheets("data")
         myArr = .Range("K2:K" & .Cells(.Rows.Count, 1).End(xlUp).Row).Value
              If IsError(.Range("K2:K" & .Cells(.Rows.Count, 1).End(xlUp).Row).Value) Then
                       MsgBox "Нужно исправить ошибку", vbExclamation + vbOKCancel
                 Exit Sub
             End If
    End With
        MassUnique = UniqueValuesFromArray(myArr, 1)

        ActiveSheet.Range("C10").Resize(UBound(MassUnique)) = MassUnique
End Sub
Изменено: Mutarix - 15.02.2018 02:02:25
Массовая отправка писем Outlook, с вставкой отдельной таблицы в каждое письмо
 
Ребята, всем привет

Пытаюсь реализовать отправку писем по заданному списку адресов.

Есть список получателей (поставщиков) которым нужно отправить письма в тело каждого письма нужно вставить разные таблицы.
То есть каждое письмо с отдельной таблицей.
В ручную это возможно сделать и это реализовано в файле (Запрос-mail1)
Но здесь не могу реализовать массовую рассылку с вставкой таблицы.

Как реализовать массовую рассылку одинаковых писем - реализовано в файле (Массовая рассылка писем)

Пытался совместить коды но к сожалению знаний не хватает.
Очень нужна ваша помощь.

Нужно чтобы при нажатии кнопки "отправить письмо" программа находила первого поставщика, формировало таблицу (копирует строки по признаку "поставщик" из закладки "заявки" и вставляла отфильтрованную по поставщику информацию на лист1 в таблицу которая будет в последствии вставлена в письмо)
Выборка уникальных значений и сохранение на отдельный лист
 
Добрый день, Друзья

Помогите пожалуйста исправить код для реализации следующей задачи:
Есть массив данных который находиться на отдельном листе.
Нужно после нажатия кнопки выбрать уникальных значений и сохранить на другом листе

Проблема в том, что не могу настроить обращение к списку с одного листа на другой.
Обмен информацией между книгами Excel
 
Добрый день,
Помогите решить следующую задачу:
Есть общий Excel файл (дальше «БАЗА»), в котором хранится информация, каждая строка содержит уникальный код, фамилию пользователя (может повторяться) и другие столбцы.
Также есть пользовательский Excel файл (дальше «USER») куда нужно загружать информацию из файла БАЗА по коду и фамилии, но только новые строки.
Критерии загрузки информации из БАЗА в USER:
1)      Нажимаем кнопку в файле USER  Загрузить
2)      Макрос проверяет новые строки в файле База и сравнивает с USER по следующим критериям:
- период проверки в файле БАЗА; (дата от, дата до) (столбец «Дата заявки» )
- выборка по определённой фамилии;
- поиск строк с уникальным кодом;
3)      Копирует отобранную информацию и вставляет в файл USER после последнего значения.
4)      Если новых уникальных строк нет – сообщение «нет новых строк»
5)      Если копирование завершено – сообщение «копирование завершено»
После работы с файлом USER нужно выгружать информацию из файла USER в файл БАЗА по коду и фамилии, значение из столбца «Фактическая дата выполнения».
Критерии выгрузки информации из USER в БАЗА:
1)      Нажимаем кнопку в файле USER  Выгрузить.
2)      Макрос в файле USER проверяет и сравнивает строки с файлом База по следующим критериям:
- период выгрузки значений в файле USER; (дата от, дата до)
- начиная с первой строки в файле USER сравнивается по уникальному коду эту строку с файлом БАЗА.
- сравнить столбец «фамилия»
если не совпадает, сообщить об ошибке «фамилия не совпадает, код строки»
если совпадает переход к проверке следующего критерия
– сравнить столбец «фактическая дата поставки»:
+ если в файле USER в ячейке значение не дата – пропускаем ячейку
+ если в файле USER в ячейке значение дата, а в файле БАЗА значение этой ячейке   также дата – сообщение об ошибке «ячейка содержит дату «дата»».
+ если в файле USER в ячейке значение дата, а в файле БАЗА значение этой ячейке не дата копируем из USER в БАЗА.
3)      Если выгрузка завершена – сообщение «информация выгружена»
Копирование строк из нескольких Листов по условию на Лист этой же Книги
 
Добрый день,
Нужна ваша помощь для реализации, думаю не сложной, задачи.
Стандартными средствами Excel задача не решается. Нужно сделать макрос. К сожалению моих знаний не хватает.

Во вложенном файле шаблон, который содержат материал для реализации задачи.
Есть рабочие листы Пост1, Пост2, Пост3, Пост4 которые постоянно наполняются информацией. На основании этой информации нужно сделать отчёты: Бюджет (отдельный лист) и Груз в пути (отдельный лист).

1) Бюджет формируется по следующим критериям:
Указываем диапазон даты пример: от 01,11,14 и до 30,11,14, после нажатия кнопки "загрузить" на лист Бюджет копируются строки (если есть возможность определенные ячейки в этих строках) Дата оплаты которых попадает в этот диапазон. Из каждого листа Пост1, Пост2, Пост3, Пост4 последовательно вставляются на Лист Бюджет.

2) Груз в пути формируется по следующему условию:
Указываем дату, на которую нужно определить груз в пути после нажатия кнопки "загрузить" применяем условие отбора строк. Все строки, которые: Дата загрузки < ("Дата")< Дата прихода пример: 15.10.2014<("01.11.2014")<15.11.14.
Из каждого листа Пост1, Пост2, Пост3, Пост4 последовательно копируются строки (если есть возможность определенные ячейки в этих строках) на Лист Груз в пути.

Заранее благодарю за любую помощь!
Страницы: 1
Наверх