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

Страницы: 1
Присвоить верный номер лота по диапазону дат
 
Добрый день.
Прошу знатоков протянуть руку помощи.
В пределах категории (С) для даты заявки (D) необходимо присвоить верный номер лота (F).
Пример: для категории "Азот; кислород; аргон" есть три даты лота: лот 1 - 14.02.2020, лот 3 - 08.04.2020, лот 4 - 05.08.2020
для всех дат заявок раньше или равно чем 14.02.2020 присвоить значение 1;
для всех дат заявок раньше или равно чем 08.04.2020 и строго больше чем 14.02.2020 присвоить значение 3;
для всех дат заявок раньше или равно чем 05.08.2020 и строго больше чем 08.04.2020 присвоить значение 4;
Прикладываю пример.
Присвоение по предыдущей и будущей (или последней актуальной) датам
 
Добрый день.

Помогите, пожалуйста, не могу найти решение.

Есть файл1, который содержит:
1) номер тендерного конкурса
2) дату завершения этого конкурса
3) код товара (ТРУ SAP), который закупался.

Есть файл2, который содержит
1) Код товара (Код ТРУ SAP)
2) историю цен
3) дату этих исторических цен

Нужно:
в файл1 из файл2 по коду товара и дате завершения конкурса присвоить:
1) предыдущую цену и ее дату
2) следующую (или если ее нет, последнюю) цену и ее дату.

Приложил пример с примером файл1 и файл2, а также необходимый результат с ссылками.

Буду дико благодарен за оказанную помощь.
Изменено: adike - 27.01.2020 12:38:01
Присвоение значения по старой дате
 
Добрый день.
Не могу найти решение.
1) Есть дата, когда закупщик взял товар (1 товар = 1 строка) в работу. (столбец В)
2) есть дата, когда данный товар  был объединен в лот для проведения торгов. (столбец С)
Задача:
каждой дате (1) присвоить спецификацию (столбец D) по первой встречающейся поздней дате (2).
для полного понимания прикладываю пример.

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

Заранее благодарю
Изменено: adike - 06.09.2019 14:10:10
транспонировать один столбец остальные столбцы оставить PQ
 
Добрый день.

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

Если можно, то хотелось бы увидеть решение в PQ
Ошибка PQ expression.error ключу не соответствует ни одна строка в таблице
 
Добрый день!
При замене источника запроса (поля полностью соответствуют старому,  только увеличиваются кол-во строк) и обновлении выскакивает ошибка "expression.error ключу не соответствует ни одна строка в таблице".
Почему так случается и где ошибка? Код прикрепляю.
Код
let
    Источник = Excel.Workbook(File.Contents("C:\Users\damir.ispolov\Desktop\Новая папка\Исполнение ГПЗ.xlsx"), null, true),
    Таблица1_Table = Источник{[Item="Таблица1",Kind="Table"]}[Data],
    #"Измененный тип1" = Table.TransformColumnTypes(Таблица1_Table,{{"Заявка", Int64.Type}, {"Вн. Заказчик", type text}, {"Менеджер", type text}, {"Отдел", type text}, {"Код ТРУ", Int64.Type}, {"Материал", type text}, {"Категория", type text}, {"ЕИ", type text}, {"№ спецификации", type text}, {"№ Конкурса", type text}, {"№ договора SAP (системный)", type text}, {"№ Лота SAP", type text}, {"№ заказа SAP", Int64.Type}, {"№ договора SAP (внешний)", type text}, {"Менеджер_ТРУ", type text}, {"Статус отработки", type text}, {"Этап", type text}, {"Правило закупок (SAP)", type text}, {"Дата заявки", type date}, {"Дата деблокирования логистом", type any}, {"Шифр ИП", type text}, {"Название ИП", type text}, {"Лот 11", type text}, {"Прогноз своевременности", type text}, {"Статус план.", type text}, {"ЦО", type text}, {"Товар/Услуга", type text}, {"БЕ", type text}, {"СЗП/Центр.закуп", type text}, {"Статус конкурса", type text}, {"Пояснение блокировки логистами", type text}, {"Кол-во", type number}, {"Сумма в заявке  (без НДС), KZT", type number}, {"Месяц желаемой поставки", type date}, {"Прогноз поставки", type date}}),
    #"Строки с примененным фильтром" = Table.SelectRows(#"Измененный тип1", each ([Дата деблокирования логистом] = "-"))
in
    #"Строки с примененным фильтром"
3 и более объединений в PQ
 
Добрый вечер, знатоки.

Есть таблица из 30к строк (в примере слева) туда нужно перенести данные из таблицы, которая состоит из 120к строк ( в примере справа).
через объединение left join это реализуемо, но нужно произвести 5 объединений, и каждый результат нужно грузить на новый лист, чтобы использовать для нового объединения. это приведет к утяжелению файла, да и метод не оптимальный...
Полагаю, можно реализовать задачу одним объединением.
Подскажите, пожалуйста как.

Также, для основной таблицы (слева) проводится еще 4 объединения с другими запросами, и приходиться каждый новый результат  подгружать на новый лист.
Можно ли все справочники подвязать к основной таблице и получить тотал результат одной загрузкой?
если да, прошу подсказать пути решения.
Изменено: adike - 27.12.2018 21:12:03
Удаление дубликатов по нескольким признакам в PQ
 
Добрый день

Поставили задачу, решение которой мне пока не известно.
Нужно
1) По столбцу А определить повторяющиеся значения (выделил желтым цветом)
2) В столбце К (№ Спецификации), если данные разные, то выделить последние 8 символов (это дата создания спецификации) и удалить строку с ранней датой
3) если же в столбце К данные идентичны (27-28 строки), то нужно проделать работу второго пункта, только уже для столбца L.
В конце я должен получить файл с уникальными значениями в столбце А (смотреть лист "результат").

Возможно ли эту работу проделать в PQ, чтоб иметь возможность одним кликом "обновить" решить задачу?
Поиск и присвоение цены по будущей дате, в обратном случае присвоение последней цены
 
Добрый вечер,

Не получается решить задачу.
Есть таблица 1, где есть поля завод, товар, дата конкурса.
Есть таблица 2, где есть такие же поля но даты не совпадают.

Нужно по совпадению завода и товара по ближайшей будущей дате присвоить цену из таб2 в таб1, если будущей даты нет, то присвоить последнюю актуальную цену.
Прикладываю пример.
макрос для ввода даты в ячейку со всплывающим календарем
 
Добрый день.
в приложенном файле, в зеленых ячейках нужно чтоб всплывал календарь, который есть в UserForm1.
Помогите, пожалуйста с кодом.
Отрезок кода, сохраняющая новый файл в указанную папку
 
Доброго времени суток.
Есть код, который сплитит файл на n файлов по уникальным значениям указанного столбца.
На данный момент, новые файлы сохраняются в той же папке, где лежит файл с кодом.
Помогите пожалуйста сформировать отрезок кода, который позволил бы сохранять новые файлы в папку
C:\Users\aidyn.khalimbetov\Desktop\Ежедневник\Новая папка\Менеджеры
Код
Sub Zakup()
Application.ScreenUpdating = False

Set shMain = Sheets("Лист1")
lr = shMain.Cells(Rows.Count, "c").End(xlUp).Row
For i = 2 To lr
    If shMain.Range("c" & i) <> shMain.Range("c" & i - 1) Then
    k = 1
        Set wb = Workbooks.Add(1): Set sh = wb.Sheets(1)
        shMain.Rows(1).Copy
        sh.Range("A1").PasteSpecial xlPasteAll
        wb.SaveAs ThisWorkbook.Path & "\" & shMain.Range("c" & i) & " .xlsx", FileFormat:=xlOpenXMLWorkbook
        k = k + 1
        sh.Rows(k) = shMain.Rows(i).Value
        If shMain.Range("c" & i) <> shMain.Range("c" & i + 1) Then wb.Close True
    Else
        k = k + 1
        sh.Rows(k) = shMain.Rows(i).Value
        If shMain.Range("c" & i) <> shMain.Range("c" & i + 1) Then wb.Close True
    End If

Next
End Sub
Логика переноса данных PQ, PP
 
Добрый день.

Прошу помощи со следующей задачей:
1) кол-во строк первого выгруженного из Qlik файла = строкам основного файла (примерно 50к строк).
2) в основной файл добавляются расчетные столбцы и столбцы, которые заполняются вручную менеджерами.
3) ежедневная выгрузка из Qlik для обновления даты, если очередной этап завершился (в приложении помечены желтым цветом).
4) новые данные по старым заявкам(в старые строки) необходимо перетащить в основной файл, а также добавить новые строки, если заявка появилась сегодня.
5) в обновленный файл менеджеры должны внести ручную инфу.

1) пункт делается  один раз, пункты 2)- 5) повторяются ежедневно.

Вытекаемые вопросы:
1) можно ли через Power Query или Power Pivot в основном файле обновлять только необходимые столбцы, но если товар появился сегодня, то чтоб вся строка попала в основной файл?
2) после распила макросом файла на менеджеров и внесения ими ручной инфы, как лучше вернуть эту инфу в основной файл? сперва через PQ собрать все в один файл, а оттуда через тот же PQ/PP перенести выборочные столбцы?
макрос не подставляет курсы валют при корректной ссылке на веб-сервис
 
Добрый день.
на просторах интернета нашел файл с командой подтягивания курса валюты на определенную дату.
при запуске макроса веб сервис подтягивается корректный, но в нужные ячейки курс не подтягивается.
у меня 2016  ексель, разделитель между целыми и дробными запятая.
Подскажите где содержи(а)тся ошибка(и)?
Код
Public SelectedDate As String, DefaultDate As StringPublic dt_1 As Date, dt_2 As Date
Option Explicit
Sub GetRates()


Dim sURL As String
Dim objHttp As Object
Dim sHtmlCode As String
Dim varInpDate As Variant
Dim WshShell As Object
Dim RegValue As String
Dim sDay As String, sMonth As String, sYear As String
Dim sDollarRate As String, sEuroRate As String, sYuanRate As String, sPoundRate As String
    'varInpDate = InputBox("Введите дату в формате ДД.ММ.ГГГГ", "Курсы валют", Date)
    Form_SelectDate.Show
    varInpDate = CStr(SelectedDate)
    If varInpDate = "" Then Exit Sub
    varInpDate = CDate(varInpDate)
    sDay = Format(varInpDate, "dd")
    sMonth = Format(varInpDate, "mm")
    sYear = Format(varInpDate, "yyyy")
    sURL = "http://www.nationalbank.kz/rss/get_rates.cfm?fdate=&quot; & _
            sDay & "." & sMonth & "." & sYear & "&switch=kazakh"
    On Error Resume Next
    Set objHttp = CreateObject("MSXML2.XMLHTTP.3.0")
    If Err.Number <> 0 Then
        Err.Clear
        Set objHttp = CreateObject("MSXML2.XMLHTTP")
        If Err.Number <> 0 Then
            Set objHttp = CreateObject("MSXML.XMLHTTPRequest")
        End If
    End If
    If objHttp Is Nothing Then
        MsgBox "Невозможно создать объект для подключения к интернет!", 48, "Ошибка"
        Exit Sub
    End If
    If objHttp Is Nothing Then Exit Sub
    objHttp.Open "GET", sURL, False
    On Error Resume Next
    objHttp.Send
    If Err.Number <> 0 Then
        MsgBox "Отсутствует доступ в интернет!", 48, "Ошибка"
        Exit Sub
    End If
    On Error GoTo 0
    sHtmlCode = objHttp.responseText
    Set objHttp = Nothing
    On Error Resume Next
    sDollarRate = Mid(sHtmlCode, InStr(InStr(1, sHtmlCode, "USD"), sHtmlCode, "</td></tr>") - 7, 7)
    sEuroRate = Mid(sHtmlCode, InStr(InStr(1, sHtmlCode, "EUR"), sHtmlCode, "</td></tr>") - 7, 7)
    sHtmlCode = ""
    '-------------------------------------------------------------------------------
    'считываем значение ключа реестра
    'HKEY_CURRENT_USER\Control Panel\International\\sMonDecimalSep
    'чтобы узнать какой знак является разделителем целой и дробной части
    'указанной в Панель управления - Язык и региональные стандарты -
    'Настройка - Денежная единица - Разделитель целой и дробной части
    Set WshShell = CreateObject("WScript.Shell")
    RegValue = WshShell.RegRead("HKEY_CURRENT_USER\Control Panel\International\\sMonDecimalSep")
    If RegValue = "." Then
        sDollarRate = CSng(Replace(sDollarRate, ",", "."))
        sEuroRate = CSng(Replace(sEuroRate, ",", "."))
    End If
    '-------------------------------------------------------------------------------
    Application.ScreenUpdating = False
    [DollarRng] = ""
    [EuroRng] = ""
    [DateRng] = varInpDate
    [DollarRng] = Replace(sDollarRate, ",", ".")
    [EuroRng] = Replace(sEuroRate, ",", ".")
    ActiveSheet.Hyperlinks.Add Anchor:=Range("LinkRng"), Address:=sURL, _
            ScreenTip:="Перейти на сайт НБ РК", TextToDisplay:="НБ РК"
    Application.ScreenUpdating = True
    MsgBox Format(varInpDate, "DD MMMM YYYY") & Chr(13) & Chr(13) _
            & "Доллар: " & vbTab & sDollarRate & Chr(13) & "Евро: " & vbTab & sEuroRate & Chr(13) _
            & "Отношение: " & Format(sEuroRate / sDollarRate, "0.0000"), 64, "Курсы валют"
End Sub
Код
сохранение приложений из аутлук через "правила"
 
Добрый день.
Есть необходимость сохранять все приложения из писем в папку на рабочем столе, которые в теме письма содержат словосочетания "сложные товары" или "сложные ТРУ".
Для этого я в модуле Outlook сохранил макрос:
Код
Public Sub saveAtt(itm As Outlook.MailItem)

Dim objAtt As Outlook.Attachment
Dim saveFolder As String
Dim sDateMail As String

sDateMail = Format(itm.CreationTime, "hh-mm-ss_dd.mm.yyyy")
saveFolder = "C:\Users\aidyn.khalimbetov\Desktop\сложные ТРУ\"

For Each objAtt In itm.Attachments
  objAtt.SaveAsFile saveFolder & "\" & sDateMail & "_" & objAtt.FileName
  Set objAtt = Nothing
Next objAtt

End Sub
и создал "правило", при котором данный макрос должен срабатывать.

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

Прошу прощения, за задачу по Outlook, а не по Excel. Не знал где создавать тему.
Прошу админов переместить или указать путь куда мне нужно будет переместить тему.
Изменено: adike - 06.08.2018 09:21:35
Автовысота строк ссылающихся ячеек
 
Всем привет.
Столкнулся с проблемой авторегулирования высоты строк.

смотреть пример.
1) в лист "данные" вносятся полные данные.
2) на листе "имена" в ячейке А1 присваивается логин компьютера, с которого открывают файл.
3) на листе "по городам",в зависимости от логина, открываются данные по роли: либо тотал, либо только свой город, либо пусто если логин не в списке пользователей.
4) лист "по городам" защищен по макрокоманде (в приложенном примере данный sub убрал)
5) в зависимости от того кто открыл, содержимое строк все время меняется, а поскольку лист защищен, нет возможности автоподобрать высоту строки (дважды щелкнув между строк), а в столбце I ("комментарии") одна ячейка может содержать несколько строк.

Можно ли написать код, так, чтобы на листе "по городам" высота строк авторегулировалась игнорируя защиту листа?

Заранее благодарю
Разбить данные одного лист на несколько листов
 
Всем здравствуйте!
Заранее приношу свои извинения, поскольку похожая тема уже обсуждалась.

Но без вашей помощи задачу решить не получается.
Есть файл с данными (см. резалка), который делит содержимое на файлы. А мне нужно чтоб он делил на новые листы этой же книги.
Покопался в инете и на просторах планетаексель.ру нашел файл который делит содержимое одного листа на новые листы этой же книги (см. Лист разбить на мелкие листы)

К сожалению, не смог адаптировать макрос из второго файла к данным первого.
Помогите, пожалуйста. Если сравню адаптированный макрос со старыми двумя, то пойму сами изменения, надеюсь, что на этом примере научусь адаптировать другие макросы.
Поиск в нескольких книгах
 
Всем привет.
Нужен был поиск в нескольких книгах из одной папки. Решение нашлось здесь
http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=8&TID=7137

Отображение результатов поиска полностью устраивает.
Но почему-то поиск по некоторым словам (полагаю, если слово часто встречается и/или если искомое слово содержится в объединенной ячейке) ломается и выдает
Run-time error '91':
Object variable or Wirh block variable not set

Тем самым поиск завершается, не отображая все результаты поиска.

Причем, когда выкатывается ошибка, автоматически снимается галочка с Параметры Excel/Дополнительно/Экран/Показывать все окна на панели задач

По какой причине возникает ошибка?
Как можно устранить ошибку?
Что нужно сделать чтобы все результаты поиска отобразились?
Почему снимается галочка?

Заранее благодарю.
Изменено: adike - 22.09.2015 15:11:18
Выборочное отображение листов пользователям
 
Всем привет!

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

Нужно чтоб группа людей, которая указана на листе "доступ" в диапазоне C4:D7 могла видеть лист "данные", а остальные нет.
Для этого я сделал:
1) На лист "доступ" в ячейку А1 вытащил логин.
2) На лист "доступ" в ячейку А2 вытащил условный код для доступа к единственному листу "данные".
3) В Subs Workbook_Open_1 попробовал ограничить доступ к листу, но не работает.

Подскажите, что делаю не так?

пример в прикреплении.
Авторассылка писем с разными файлами на разные адреса
 
Знатоки, прошу помочь со следующей задачей:
1) есть папка сфайлами А0001, А0002, ... , А000х, ... , Z0001, Z0002, ... , Z000x. (примерно 30 000 файлов)
2) есть excel файл со следующим содержанием
какой файл   кому отправить
А0001   ivanov@mail.ru
А0002 petrov@mail.ru
...... ..........
Z000x sidodrov@mail.ru
Возможно ли написать код, который отправлял бы соответствующий файл из папки соответствующему адресату?
Изменено: adike - 02.03.2015 13:00:41
Разделить содержимое листа на n файлов по переменному признаку
 
Всем привет.
Прошу помочь со следующей задачей.
есть файл с данными, который необходимо разделить на, порядка, 32000 файлов для рассылки сответствующим клиентам.
Файл следует разделить по признаку "Зона доставки" (в примере залит желтым цветом) и этой же зоной доставки назвать разрезанный файл.
Кол-во зон доставок разное, а значит и файл должен делиться на файлы с разным кол-вом строк.
На просторах инета нашел решение похожей задачи, но там начало и конец среза ознаменованы конкретными словами ("всего" и "контрагент" ) .
Вполне возможно его можно адаптировать под мою задачу, но у меня не хватает знаний...
Код
Sub ertert()
Dim fn As String, wsh As Worksheet, wb As Object
Dim r As Range, rr As Range, s As String, ss As String
Application.ScreenUpdating = False
ActiveSheet.Copy Before:=Sheets(1)
Set wsh = ActiveSheet: s = "ВСЕГО": ss = "Контрагент"
With wsh.UsedRange.Columns("B:B")
    Do
     Set r = .Find(s, lookat:=xlWhole)
     If Not r Is Nothing Then
      With .Cells(1, 1).Resize(r.Row)
          Set rr = .Find(ss, lookat:=xlWhole)
          If Not rr Is Nothing Then
           fn = ThisWorkbook.Path & "\" & Replace(rr(1, 2), """", "")& "_" & rr(2, 2) & ".xls"
           Set wb = Workbooks.Add
           .EntireRow.Copy
           wb.Sheets(1).Range("A1").PasteSpecial Paste:=xlPasteAll
           wb.Sheets(1).Range("A1").PasteSpecial Paste:=xlPasteColumnWidths
           wb.SaveAs fn, xlNormal: DoEvents: wb.Close
          End If
          .EntireRow.Delete
      End With
     End If
    Loop Until r Is Nothing
End With
Изменено: adike - 02.03.2015 11:14:18
Как поменять ссылки на данные в графиках
 
Здравствуйте, не могу решить следующую задачу: есть 12 идентичных листов (янв-дек) с данными по планам и фактам в разрезе сотрудников. На 13-ом листе нужно создать графики по этим сотрудникам. Для первого месяца по всем сотрудникам (30 чел) я уже создал графики. Можно ли скопировать эти графики, расположить рядом и быстрым способом поменять ссылки на второй лист, далее, третий и т.д.? Менять ссылки вручную в каждом графике можно, но на 11 листов по 30 графиков, итого 330 графиков менять как-то лень.
Страницы: 1
Наверх