Максим В., да, так было проще, я че-то извращнулся и создал три списка ключевых:строчные, прописные и пропнач и взял их сумму)
Подсчет количества определенных значений в тексте
Подсчет количества определенных значений в тексте
Подсчет количества определенных значений в тексте
MSXML2.XMLHTTP по списку URL c заданными XPATH селекторами, Парсинг
05.05.2020 19:35:59
Сразу скажу, ознакомился с
Не хватает бэкграунда по терминологии, а VBA - вообще темный лес, поэтому не исключаю, что схожая тема существует - но постарался сначала все изучить, прежде чем обратиться. *Про Parser в курсе, Игорь сделал полезный софт, но хочется идти своим путем. В общем. Есть поставщик с каталогом, есть список url, которые ведут к карточкам товара в этом каталоге. Есть понимание где в коде html находятся нужные значения. Единственное, не совсем понимаю, в чем разница между xpath и selector - когда в режиме просмотра нажимаешь на элемент и выбираешь опцию copy. В таблице поэтому две колонки на одно значение. Алгоритм логически представляется простым: делается запрос по url в колонке url_list, далее по другим колонкам где описан путь к искомым данным выбирается значение и в виде текста возвращается в колонку по строке того же url. В приложенном файле вручную заполнил значения, вроде все понятно. Сложность вижу в том, когда на один атрибут - в примере - размер приходится несколько значений, и точное количество неизвестно. Еще у других поставщиков есть вариации с зависимостью цен и веса от размеров - то есть когда размер кнопкой, а значения цены и веса динамические. Нужен получается, макрос, который заполнит таблицу. Мне комфортнее работать с функциями, но она наверное будет обрабатывать дольше, т.к на каждую ячейку будет приходиться новый запрос. Поправьте если ошибаюсь. Буду благодарен за подробный комментарии к макросу, т.к. во-первых, поставщики есть другие, придется переадаптировать макрос каждый раз, а меня шаг влево, шаг вправо в незнакомом коде напрочь сбивает, во-вторых похоже неизбежно движусь к изучению VBA, было бы полезно. P.S. Может имеет смысл ориентироваться не по списку url, потому что его тоже надо каждый раз отдельно формировать, а по адресу "корневой папки": |
|
|
Подсчёт уникальных артикулов по поставщику
24.04.2020 10:07:53
Wild.Godlike, до божественного вмешательства искренне считал, что с темой все ок - сейчас не знаю как переименовать)
на ваш файл антивирус ругается, кстати - впервые вижу такое |
|
|
Подсчёт уникальных артикулов по поставщику
24.04.2020 09:56:24
vikttur,Давайте изменим названием темы. Формулировку "Счётесли" выбрал потому что оно максимально лаконично определяет задачу: подсчет количества при определенном критерии. Можем поменять на "Подсчет количества уникальных значений с условием".
P.S. У Mershik кстати, действительно было что-то похожее, но там нецелочисленные значения выдает. |
|
|
Подсчёт уникальных артикулов по поставщику
24.04.2020 09:49:56
Михаил Лебедев, спасибо.
|
|
|
Подсчёт уникальных артикулов по поставщику
24.04.2020 09:11:46
vikttur,Никому не говорить о названии темы?) А если серьезно:
2.1. Название темы должно отражать смысл проблемы. Темы с названиями "Помогите", "Help", "Срочно", "Нужен макрос" - плохая идея. Модераторы имеют право переименовать, удалить или закрыть такие темы без предупреждения. Без шуток - не понимаю, в чем проблема. |
|
|
Подсчёт уникальных артикулов по поставщику
Переименование файлов из одной папки по списку
18.04.2020 11:55:53
Nordheim,Отлично работает!
Еще заменил If Err > 0 Then Cells(i, "a").Interior.Color = vbRed: Err.Clear на If Err.Number = 58 Then Cells(i, "a").Interior.Color = vbRed: Err.Clear If Err.Number = 53 Then Cells(i, "a").Interior.Color = vbBlue: Err.Clear Мне удобно, но я думаю, для чистоты нужно что-то добавить для других ошибок. |
|
|
Переименование файлов из одной папки по списку
17.04.2020 15:39:12
В общем, неделю назад искал как переименовывать файлы по списку и наткнулся на эту тему. Обрадовался, начал использовать, но на практике постоянно сталкивался с какими-то мелкими проблемами. В итоге пришел вот к такому варианту кода:
Option Explicit Sub Rename() On Error Resume Next Dim OldName As String, NewName As String, sPath As String Dim i As Long, lLastRow As Long sPath = "C:\1\" lLastRow = Cells(Rows.Count, "a").End(xlUp).Row For i = 2 To lLastRow OldName = sPath & Cells(i, "a") NewName = sPath & Cells(i, "b") Name OldName As NewName Next i If Err > 0 Then Exit Sub On Error GoTo 0 End Sub Сразу скажу, что я там даже близко не программист, только примерно понимаю, как код работает, опирался на интуицию и просто шел путем перебора вариантов. Какие тут изменения относительно верхнего кода и почему: 1. Убрал кнопку - мне не нужна, и два одинаковых кода смущают. 2. Переименовал sub - почему-то иногда проблемы с кодировкой при ctrl-v 3. Заменил 1 и 2 на "a", "b" здесь: " sPath & Cells(i, 1) sPath & Cells(i, 2)". Наверное, не обязательно, но мне проще соотносить с колонкой было 4. "lLastRow = Cells(Rows.Count, "a")". Показалось, что с 2 у меня не работало. Заменил на 1, потом на "a", соответственно. 5. Сразу сделал отсчет со второй строки. Как правило, всегда есть подзаголовки. 6. И, самое главное, постоянно вылезали ошибки 53 и 58. Когда работаешь с большим объемом данных, неудобно спотыкаться на каждой строке. Проще потом проверить, что не так. Минус еще в том, что он последовательно обрабатывает строчки и непонятно на какой именно происходит ошибка, а уже переименованные строки он считает ошибочными при повторном запуске. Поэтому погуглил как игнорировать ошибки. Я понимаю, что как сами изменения, так и мои комментарии для специалиста могут выглядеть также как шаманские рецепты выглядят для врача, но эта система работает, и может кому-то помочь. С радостью узнаю о возможных неточностях или более эффективных методах решения проблемы.
Изменено: |
|
|
Группировка без промежуточных строк и с условиями
Группировка без промежуточных строк и с условиями
Сохранение визуального отображения формата как значения
04.04.2020 17:51:14
buchlotnik, Спасибо!
|
|
|
Сохранение визуального отображения формата как значения
04.04.2020 11:43:28
Дмитрий(The_Prist) Щербаков, по вашей ссылке может я в ufd не разобрался, но когда я создаю модуль вот с этим:
Function VisualVal_Text(rc As Range) VisualVal_Text = rc.Text End Function У меня просто все числа заменяются на шаблон формата. То есть было 15827, ожидалось/отображалось 015827, вышло 000000
Изменено: |
|
|
Группировка без промежуточных строк и с условиями
04.04.2020 11:08:13
Андрей_26, спасибо, но один в один я могу настроить в 1с такую структуру данных. От нее и исходил, в общем-то. Даже здесь на форуме макрос искал чтобы пустые размерные колонки удалять. Эти данные импортируются, и для импорта нужна именно такая структура как в моем примере на листе 2.
|
|
|
Группировка без промежуточных строк и с условиями
Удаление пустых ячеек с условием
01.04.2020 15:44:02
Mershik, Kuzmich, спасибо, не понимаю, как конкретно они делают но оба макроса дают результат.
Mershik, самая лаконичная и правильная формулировка, наверное, будет такая: Если ячейка в столбце с подзаголовком содержащим текст "цена" пустая - удаляется она и две ячейки справа от нее, со сдвигом влево. Kuzmich, в прошлом сообщении что-то сказали про "неответ". Предполагаю, я когда-то на одной из тем не отреагировал на ваше сообщение. Наверное, забыл подписаться на новые сообщения. Если Вы тогда потратили время на помощь мне, то спасибо и извините, что не увидел или забыл ответить. |
|
|
Удаление пустых ячеек с условием
Сохранение визуального отображения формата как значения
Сохранение визуального отображения формата как значения
Количество строк в группировке
Данные по остаткам, находящихся на других листах, с отбором по поставщику и виду товара
Данные по остаткам, находящихся на других листах, с отбором по поставщику и виду товара
27.01.2020 11:44:57
Inexsu Михаил, спасибо! Макрос выглядит сложнее чем мне казалось.
|
|
|
Данные по остаткам, находящихся на других листах, с отбором по поставщику и виду товара
24.01.2020 19:52:05
Прошу совета.
Имеем выгруженные из 1с один отчет по продажам, сформированный как в примере, на 12 месяцев, и 12 отчетов по остаткам на начало каждого месяца. В качестве номенклатурных позиций у нас товары(с иерархией) и поставщики. Формируем один документ с 13 листами. Нужно на первом листе с продажами заполнить количество данного вида товара данного поставщика на начало месяца для того чтобы рассчитать процент продаж относительно общего количества. При этом не факт что поставщики в продажах и остатках будут совпадать. P.S Разработчик конфы начал злоупотреблять властью и за простенькие доработки просит большие деньги. Потихоньку изучаю язык запросов, и вроде даже представляю как сформировать такой готовый отчет в учебной базе, но как только захожу в нашу систему, разбегаются глаза от обилия отчетов, справочников, регистров и т.п. P.P.S. Кстати, может кто знает, как корректнее брать остаток для подсчета отношения проданного и "в наличии". Самым правильным, наверное, было брать значения остатка на момент продажи конкретной единицы товара а потому выводить сумму отношений, но это как-то муторно и много операций.
Изменено: |
|
|
Автозаполнение с ссылками на другой лист
Автозаполнение с ссылками на другой лист
Автоматически выводить количество товаров определенного вида в определенном типе вагонов
Автоматически выводить количество товаров определенного вида в определенном типе вагонов
07.11.2019 16:14:54
Stics, интуитивно, так и думал, спасибо
Wiss, Спасибо за подробный ответ, но он немного путает. Наибольшее значение возвращает при условии, что список отсортирован? А если нет, просто последнее? Эмпирически выглядит так. Может вообще бессмысленно в моем случае говорить о массиве? А что вообще под последним значением понимается точно? Пустые ячейки игнорируются? |
|
|
Автоматически выводить количество товаров определенного вида в определенном типе вагонов
07.11.2019 15:39:19
Vik_tor, Спасибо большое, отлично подходит! Не могли бы вы прокомментировать какая роль у "искомого значения" - "9^9" в этой формуле, я немного почитал про функцию просмотр, на этом месте обычно стоит некое значение которое надо найти в векторе или массиве.
Отвлеченный вопрос, я правильно сформулировал свою проблему?) |
|
|