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

Страницы: 1 2 3 След.
Вставить UDF функцию в ячейку и передать ей аргумент
 
Цитата
Кунст написал:
Супер! спасибо всем! а какую роль играет амперсанд при вставке формулы?

Он склеивает строки всё что внутри кавычек - это просто строка, если часть строки, это переменная, то её нужно вызвать вне кавычек.
Вставить UDF функцию в ячейку и передать ей аргумент
 
Код
"=DaysUntilToday(" & sss & ")"


Если цель кода не в 1 ячеку вставлять формулы, то проще через r1c1 формат
Код
range().FormulaR1C1 = "=DaysUntilToday(RC2)"
Изменено: Nartiny - 09.07.2025 18:58:21
Случайные числа из диапазона в зависимости от числа., Случайное число генерируется, при повышении диапазона.
 
Код
=ЕСЛИ(((RC[-1]>R3C5)*(RC[-1]<R3C6))=1;RC[-1];СЛУЧМЕЖДУ(R3C5;R3C6))
Изменено: Nartiny - 09.07.2025 18:57:29
Раскрывающийся список со связкой данных.
 
=ПРОСМОТРX(R2C1;данные!C1;данные!C;"";0;1)

Будут 0 на пропусках, если мешают, то убирать как-то так:

=ЕСЛИ(ПРОСМОТРX(R2C1;данные!C1;данные!C[12];"";0;1)=0;"";ПРОСМОТРX(R2C1;данные!C1;данные!C[12];"";0;1))
Поиск во всех файлах, Указать папку поиска
 
Цитата
RUSBelorus написал:
если буквально вместо ставим в 27 строку то ошибка, скрин

В самом начале задаём iPath: Dim iPath as Variant
Автоматическое обновление значений в ячейках, содержащих данные с сайта
 
Цитата
Captain Nemo написал:
- что такое токен и где его взять?
Токен это длинная цепочка символов, берёте в Личном кабинете продавца --> настройки --> Доступ к Api --> Сформировать токен


Цитата
- как вставить этот макрос в эксель и как им дальше пользоваться?

Это вопросик посложней.
https://www.planetaexcel.ru/techniques/3/59/
Если нужна не подсказка, а готовое решение, то что-то типа такого, но тут только функция с ценами по артикулу:
Код
Function MyWBPriceParser(WBID As String)
    Dim objHTTP As Object, key As String, WBresp As String, url As String, Start As String, Finish As String
'   === Сюда свой токен ===
    key = ""
'   =======================
    url = "https://discounts-prices-api.wildberries.ru/api/v2/list/goods/filter&filterNmID=" & WBID
    Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP.6.0")
    Call objHTTP.Open("GET", url)
    Call objHTTP.setRequestHeader("Content-Type", "application/json")
    Call objHTTP.setRequestHeader("Authorization", key)
    Call objHTTP.send()
    WBresp = objHTTP.responseText
    Start = InStr(1, WBresp, "discountedPrice") + 18
    Finish = InStr(Start, WBresp, ",")
    MyWBPriceParser = Mid(WBresp, Start, Finish - Start)
End Functionn


Потом в ячейке: =MyWBPriceParser(ID), ID можно и ссылкой на другую ячейку, можно и в прямую вбить, только кавычки не забывайте
Изменено: Nartiny - 09.07.2025 11:38:49
Автоматическое обновление значений в ячейках, содержащих данные с сайта
 
Есть сайт https://dev.wildberries.ru/
Это официальный Api ягод.
на этом сайте есть команды.
Вам нужны цены: Они здесь:https://dev.wildberries.ru/openapi/work-with-products#tag/Ceny-i-skidki/paths/~1api~1v2~1list~1goods~1filter/get
Там прямо на сайте можно нажать кнопку копирования и получить ссылку для параметра url = "https://discounts-prices-api.wildberries.ru/api/v2/list/goods/filter"
+есть параметры для запроса, Вам нужно для конкретного товара - это filterNmID, добавляем его к нашей url и получаем финальный запрос:
https://discounts-prices-api.wildberries.ru/api/v2/list/goods/filter&filterNmID=<артикул ВБ>"
reqbody - это заготовка для запросов на изменение данных там по хорошему ещё и тип запроса добавить:
Код
Function RequestAPI(url As String, Optional com as String = "GET", Optional reqBody As String = "") As String
    Dim objHTTP As Object, key As String
'   === Сюда свой токен ===
    key = ""
'   =======================
    Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP.6.0")
    Call objHTTP.Open(com, url)
    Call objHTTP.setRequestHeader("Content-Type", "application/json")
    Call objHTTP.setRequestHeader("Authorization", key)
    Call objHTTP.send(reqBody)
    RequestAPI = objHTTP.responseText
End Function
Автоматическое обновление значений в ячейках, содержащих данные с сайта
 
Если Вы продавец, то формируете токен и через запросы.
Код
Function RequestAPI(url As String, Optional reqBody As String = "") As String
    Dim objHTTP As Object, key As String
'   === Сюда свой токен ===
    key = ""
'   =======================
    Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP.6.0")
    Call objHTTP.Open("GET", url)
    Call objHTTP.setRequestHeader("Content-Type", "application/json")
    Call objHTTP.setRequestHeader("Authorization", key)
    Call objHTTP.send(reqBody)
    RequestAPI = objHTTP.responseText
End Function


Вообще Вб вроде как борется с парсингом без заноса им денег, но парсеры существуют. Создаёте/качаете на каком-нибудь питоне простенький и запускаете через командную строку из макроса.
Изменено: Nartiny - 08.07.2025 17:44:07
Отчет по продажам
 
Сотрудников можно так выцепить:
Код
=ТРАНСП(ФИЛЬТР(C12;ЛЕВСИМВ(C12;3)="КН1"))

Товары:
Код
=УНИК(ФИЛЬТР(C12;НЕ(ЛЕВСИМВ(C12;3)="КН1")*(C12<>"")))


Изначальные формулы после этого работают. Но зачем  сначала таблицу от 1с, потом макрос, потом лист с формулами, потом данные в нужном формате.

Если макрос сразу работает с этими данными, почему бы сразу не формировать отчёт в финальном, нужном Вам виде?
Изменено: Nartiny - 03.07.2025 19:03:08
Функция ЕСЛИОШИБКА для определенных типов ошибок
 
Код
=ЕСЛИОШИБКА(ПРОСМОТРX(ТИП.ОШИБКИ(<формула>);{1;2;3;4;5;6;7;8;9;10;11;12;13;14};{"#ПУСТО!";"#ДЕЛ/0!";"#ЗНАЧ!";"#ССЫЛ!";"#ИМЯ?";"#ЧИСЛО!";"#Н/Д";"#ОЖИДАНИЕ_ДАННЫХ";"#ПЕРЕНОС!";"#ПОДКЛЮЧ!";"#ЗАБЛОКИРОВАНО!";"#НЕИЗВЕСТНО!";"#ПОЛЕ!";"#ВЫЧИСЛ!"};"Опа, новая ошибка";0;1);<формула>)
Изменено: Nartiny - 03.07.2025 18:01:59
VBA Прослушка окончания работы Object("WScript.Shell").Exec
 
Цитата
Msi2102 написал:
Тут  подобная тема была

Спасибо, всё работает

Финальный код:
Код
Sub DownloadBikFile(myPath As String, fileName As String)
    Dim HttpObj As Object, StreamObj As Object, FileObj As Object, deCompObj As Object
    Set HttpObj = CreateObject("Microsoft.XMLHTTP")
    HttpObj.Open "GET", "http://cbr.ru/s/newbik", False
    HttpObj.send
    If HttpObj.Status = 200 Then
        Set StreamObj = CreateObject("ADODB.Stream")
        StreamObj.Open
        StreamObj.Type = 1
        StreamObj.Write HttpObj.responseBody
        StreamObj.SaveToFile myPath & "\temp.zip", 2
        StreamObj.Close
        Set deCompObj = CreateObject("WScript.Shell").Exec("powershell -command Expand-Archive -LiteralPath '" & myPath & "\temp.zip" & "' -DestinationPath '" & myPath & "'")
        Do While deCompObj.Status = 0
        Loop
        Set FileObj = CreateObject("Scripting.FileSystemObject")
        FileObj.getfile(myPath & "\temp.zip").Delete
        If FileObj.FileExists(myPath & "\" & fileName) Then FileObj.getfile((myPath & "\" & fileName)).Delete
        For Each i In FileObj.getfolder(myPath).Files
            If Right(i.Name, 3) = "xml" Then
                i.Name = fileName
                Exit For
            End If
        Next
    End If
End Sub
Макрос для объединения данных из файлов .dbf в один файл, Присылают с почты до 100 файлов в формате .dbf - их нужно объединить в один файл Excel для дальнейшей обработки
 
Цитата
Muxa K написал:
Хочу для удобства девочкам сделать формулы в столбцах K:M Им после этого и делать ничего не придётся.
Код
Dim lstLine As Long, aSt As Worksheet
Set aSt = ActiveWorkbook.ActiveSheet
lstLine = aSt.Cells(Rows.Count, 1).End(xlUp).Row
aSt.Range(aSt.Cells(2, 11), aSt.Cells(lstLine, 11)).Formula2R1C1Local = "=ЕСЛИ(СУММПРОИЗВ(--ЕЧИСЛО(ПОИСК(ЦЕЛОЕ(RC[-1]);ЦЕЛОЕ(R1C[-1]:RC[-1]))))=1;ЦЕЛОЕ(RC[-1]);"""")"
aSt.Range(aSt.Cells(2, 12), aSt.Cells(lstLine, 12)).Formula2R1C1Local = "=ЕСЛИ(RC[-1]<>"""";СУММ((ЕСЛИ(ЕЧИСЛО(--R2C[-2]:R1000C[-2]);ЦЕЛОЕ(R2C[-2]:R1000C[-2]))=ЦЕЛОЕ(RC[-2]))*ЕСЛИ(ЕЧИСЛО(--R2C[-2]:R1000C[-2]);R2C[-9]:R1000C[-9]));"""")"
aSt.Range(aSt.Cells(2, 13), aSt.Cells(lstLine, 13)).Formula2R1C1Local = "=ЕСЛИОШИБКА(RC[-1]-RC[-1]*1%;"""")"
VBA Прослушка окончания работы Object("WScript.Shell").Exec
 
Понадобилось получать данные о банках по БИК. Честно думал, уже есть что-то готовое, но гугл не помог.

Проблема возникает при распаковке архива от Банка России.
Как костыль поставил просто задержку, но хотелось бы, чтобы код останавливался, а потом понимал, что распаковка завершена и возобновлялся.

Приложил пример, xml не прикрепляется, так что в архиве, если с Банка России качать, то там ок 700 кБ

Код
Sub DownloadBikFile(myPath As String, fileName As String)
    Dim HttpObj As Object, StreamObj As Object, FileObj As Object
    Set HttpObj = CreateObject("Microsoft.XMLHTTP")
    HttpObj.Open "GET", "http://cbr.ru/s/newbik", False
    HttpObj.send
    If HttpObj.Status = 200 Then
        Set StreamObj = CreateObject("ADODB.Stream")
        StreamObj.Open
        StreamObj.Type = 1
        StreamObj.Write HttpObj.responseBody
        StreamObj.SaveToFile myPath & "\temp.zip", 2
        StreamObj.Close
        CreateObject("WScript.Shell").Exec ("powershell -command Expand-Archive -LiteralPath '" & myPath & "\temp.zip" & "' -DestinationPath '" & myPath & "'")
'===================================================
        
        
        Application.Wait Now + #12:00:05 AM#
        
        
'===================================================
        Set FileObj = CreateObject("Scripting.FileSystemObject")
        FileObj.getfile(myPath & "\temp.zip").Delete
        FileObj.getfile(myPath & "\" & fileName).Delete
        For Each i In FileObj.getfolder(myPath).Files
            If Right(i.Name, 3) = "xml" Then
                i.Name = fileName
                Exit For
            End If
        Next
    End If
End Sub
Изменено: Nartiny - 03.07.2025 15:53:16
[ Закрыто] Найти гросс сумму ГПХ работникам, найти сумму в гросс с налогами, известна сумма на руки
 
Желательно не только, как есть, но и как надо. Не очень понятно, где брать данные для ограничений. Вот заготовка:

Код
=МИН(МАКС(<Ваша формула>;<ограничение снизу>);<ограничение сверху>)
Изменено: Nartiny - 27.02.2025 17:41:28
Прогноз выручки на полгода вперед, Помогите посчитать прогноз выручки
 
тяните, только там раб суббота в ноябре, если принципиально можно в формулу исключение подставить, ну или ту субботу выходным посчитает, а потом понедельник будним.
Автоматическое распределение веса по ящикам, Как распределить общий вес в заданное количество разных ящиков
 
насколько нам нужно эффективно укладывать?
самое простое общий вес поделить на кол-во ящиков, а потом взять ящик побольше
В Вашем примере: 101/7=14,4 => 7 ящиков по 20 кг
Прогноз выручки на полгода вперед, Помогите посчитать прогноз выручки
 
не так красиво, но с  учетом праздников. Только это всё равно аналитика +- километр
Прогноз выручки на полгода вперед, Помогите посчитать прогноз выручки
 
Формулу дал) берём среднее за день, умножаем на полгода 365/2=182,5
Прогноз выручки на полгода вперед, Помогите посчитать прогноз выручки
 
Код
=Срзнач()*182,5

Вы как предполагаете это рассчитывать? Тут могут формулу подкорректировать, макрос составить. А придумать, как Ваша выручка зависит от сезонности, политической ситуации или гороскопа на день расчёта... для этого данных маловато
Изменено: Nartiny - 18.02.2025 17:33:24
[ Закрыто] Сложная задача ВПР со связкой, ВПР
 
Если одна ось с одной отметкой в разные даты, то как понять какую дату выбрать? Если такого нет, то в чём проблема: впр выберет первый найденный вариант, если этот вариант совпадает со всеми остальными, то ответ всё равно будет верный.
[ Закрыто] Сложная задача ВПР со связкой, ВПР
 
Цитата
Alik34444 написал:
gling , наконец-то победил, убрал все лишнее
там ещё тысяч пять строк лишних, а то и шесть.

Код
=если(R[-1]C=<формула поиска даты>;"";<формула поиска даты>)


Не до конца понятно, какие параметры Вы учитываете при поиске
Формула ИНДЕКС+ПОИСКПОЗ + доп УСЛОВИЕ, Подтянуть данные через формулу "ИНДЕКС+ПОИСКПОЗ" с условием
 
Цитата
Ну и объединения - зло, вынуждают отказываться от протягивания формул...
Можно как-то так обойти, но кажется, что, когда 2 столбца проще чуть видоизмененные формулы:

Код
ИНДЕКС(R2;1;СТОЛБЕЦ(RC)-ОСТАТ(СТОЛБЕЦ(RC);2))
Формула ИНДЕКС+ПОИСКПОЗ + доп УСЛОВИЕ, Подтянуть данные через формулу "ИНДЕКС+ПОИСКПОЗ" с условием
 
Код
=СУММПРОИЗВ(№2!C3;--(№2!C2=R2C);--(№2!C1=RC1))
=СУММПРОИЗВ(№2!C4;--(№2!C2=R2C[-1]);--(№2!C1=RC1))
Расчет скидки от колличества товара/персональная скидка/сумма покупки, Не могу понять какую формулу использовать
 
Я бы Вам порекомендовал задуматься над структурой данных. Цены внутри формул, всегда едины. Невозможность продать условные 55 шт. Товары по столбикам... 11 штук ещё норм, но вдруг завтра будет 50.

Цитата
После 25 штук продажа только пачками, коробками и паллетами - 30/50/100 шт с фиксированной скидкой.
А потом пример, где товар 1 поштучно, товар 2-  коробка, товар 3 - паллета. Это ограничение по каждой группе или на заказ?
Можно ли купить 2 пачки? (60 шт); 3 коробки? (150 шт) или 1...25/30/50/100/200/300... и иных вариантов не будет?
Изменено: Nartiny - 13.02.2025 15:51:08
Макрос не меняет все данные по условию
 
Заменяйте не на 0, а на фигню какую-нибудь

Код
rng.Cells(i, j).Value = "заменить"


а после цикла просто меняете на 0:

Код
rng.Replace What:="заменить", Replacement:="0"
Оценка уровня дистрибьюции, Какое количество магазинов продает какое количество товаров
 
Цитата
Paul Baseus написал:
В твоем случае единственно верный ответ будет  2 - 2 Две единицы ассортимента представлены в двух магазинах. Не важно какие именно это магазины, важно количество магазинов и количество уникальных sku на них.

Омг. Я ожидал ответа 3-2: 3 sku в двух магазинах или 2-3: в 3 магазинах по 2 sku

Но как минимум узнали, что товарные группы вычленять не нужно...

Тут оба варианта, может что подойдёт. Но с постановкой задачи у Вас не очень, понять намного сложней, чем реализовать.
Оценка уровня дистрибьюции, Какое количество магазинов продает какое количество товаров
 
Ок. Есть Товар 1, Товар 2, Товар 3.
товар 1 в магазах 1,2
товар 2 в магазах 2,3
товар 3 в магазах 1,3

Какой нужен ответ?

3-2

товар1, товар2-2-1
товар1, товар3-2-1
товар2, товар3-2-1
Построчный поиск + сумма значений + сортировка по дате
 
Цитата
EGVOZDIKOV написал:
Нужно суммировать по месяцам, что бы понимать общую потребность по каждой позиции на месяц. То есть, конкретная дата не важна.  

В файле все 3 варианта, есть и суммирование

Цитата
EGVOZDIKOV написал:
А такой еще вопрос. В случае если кол-во по позициям находятся в одно книге exсel  файла, а сумму по позициям по месяцам необходимо внести в другую книгу, функция кардинально меняется? Или, как в случае с функций ВПР?

Кардинально не меняется, но книга с данными должна быть открыта
Оценка уровня дистрибьюции, Какое количество магазинов продает какое количество товаров
 
Откуда брать количество в конкретном магазине?
Где нужен результат?
Но базово =СУММЕСЛИ, для количества товара, =СЧЁТЕСЛИ для количества магазинов.
Построчный поиск + сумма значений + сортировка по дате
 
Нужно суммировать или искать первое/последнее значение для месяца?

В таблице сменил формат заголовка колонки с месяцами. Теперь там дата с форматом "ММММ"
Страницы: 1 2 3 След.
Наверх