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

Страницы: 1 2 3 След.
Пронумеровать повторы по критерию
 
Здравствуйте, форумчане,

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

-если название товара встречается в таблице 1 раз, то ставим 1
-если название товара встречается 2 раза, то первое вхождение получает 1, а второе такое же значение получает 2
-если название встречается 3 раза, то 1 вхождение получает 1, второе 2, третье 3

Посчитать количество значений могу по счетесли.
Но как потом проставить нужную нумерацию по описанному условию?


Буду благодарна подсказке.
Пример во вложении
Изменено: all L - 29.01.2023 21:46:07
Переместить несколько символов в строке по условию
 
Спасибо вам, милые люди, за помощь!!!!

Благодаря вам день будет прекрасен )))


И вопрос закрыт.
Переместить несколько символов в строке по условию
 
Уважаемые форумчане,

Поставщик прислал файл. Составы написаны в неудобном формате (в примере ниже это столбец Сейчас). Т.е. сначала идет текст, затем в скобках процентное содержание.

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

Буду благодарна за любую идею: будь то формула, макрос...


СейчасНужно
Viscose (%90) Lurex (%10)90% Viscose 10% Lurex
Cotton (%100)100% Cotton
Linen (%100)   Jute (%100) Thermoplastic (%100)100% Linen 100% Jute   100% Thermoplastic
Cotton (%97)   Elastane (%3)97% Cotton 3%   Elastane
PVC (%100) Eva   (%100)100% PVC 100% Eva
Функция СУМЕСЛИМН - работа функции при отсутствии одного из искомых критериев
 
Добрый день.

Использую сумеслимн для поиска и суммирвоания данных по 2 критериям.
Замечаю, что, если один или оба искомые критерии отсутствуют, то формула возвращает 0
Мне это неудобно, т.к. иногда формула может вернуть 0 просто потому, что проссумированный ею результат равен нулю.

Можно ли как-то выкрутиться и сделть так, чтобы в случае, если один или оба искомые критерии не найдеры, возвращалось бы "нет таких критериев" или хоть сообщение об ошибке
Во вложении пример демонстрирует проблему

Спасибо!
VBA поиск копирование данных - улучшить скорость работы кода + работа при фильтре
 
Добрый день, уважаемые форумчане

Имею такую задачу:
В книге excel "Остатки"на листе "БазаДляВставки" огромный список артикулов (от 40 тыс строк и до 50-60тыс может быть), к этим артикулам надо подтянуть из другой книги excel "БазаОписаний" разные характеристики . В этой другой книге тоже кол-во строк большое (50-70-100тыс). Кол-во столбцов в ней еще больше. Мне из этой книги нужны не все столбцы, только некоторые.

Решаю задачу следующим образом:
Открываю файл  "БазаОписаний", нахожу в ней нужные мне столбцы и переношу их в книгу "Остатки" на доп. лист "БазаДляКопир". После чего работаю только в одной книге с двумя листами: лист, откуда копирую данные "БазаДляКопир" и лист, куда эти данные вставляю "БазаДляВставки"
Ниже привожу код процедуры, которая производит поиск и вставку нужных данных из одного листа на другой.

Сейчас для обработки 45тыс строк уходит примерно 8 минут.


Первый вопрос: можно ли как-то улучшить код, чтобы ускорить его работу?
Второй вопрос (боль моя и печаль). Если пытаться обработать отфильтрованные по какому-либо критерию данные, а не все строки от первой до последней, обработка происходит непревильно (скрытые фильтром строки сбивают массивы и все вставляется неправильно). Можно ли как-то изменить код, чтобы возможно было обрабатывать отфильтрованные данные?



Код
     
 ' определяю последнюю строку в базе для копирования
LR2 = ThisWorkbook.Worksheets("БазаДляКопир").Cells(Rows.Count, 1).End(xlUp).Row '
 

 ' определяю последнюю строку в базе для вставки
LR1 = ThisWorkbook.Worksheets("БазаДляВставки").Cells(Rows.Count, 7).End(xlUp).Row '



    Application.ScreenUpdating = False
    Application.ShowWindowsInTaskbar = False
    Application.EnableEvents = False



 ' определяю массив ARR1  - массив данных, которые будут копироваться и массив ARR2 - массив, куда все будет вставляться
 ThisWorkbook.Worksheets("БазаДляКопир").Activate
ARR1 = ThisWorkbook.Worksheets("БазаДляКопир").Range(Cells(2, 1), Cells(LR1, 12)).Value


ThisWorkbook.Worksheets("БазаДляВставки").Activate
ARR2 = ThisWorkbook.Worksheets("БазаДляВставки").Range(Cells(2, 17), Cells(LR2, 27)).Value
 

'в массиве ARR2 , куда планирую вставлять данные ищу те строки, где данные нужно заполнить (если в ячейке с описанием изделия пусто, значит, надо обработать)
        For i = 1 To UBound(ARR2)
           If ARR2(i, 2) = "" Then

' в массиве ARR1 ищу нужные данные по столбцам от 1 до 11
                   For j = 1 To UBound(ARR1)
                       If ARR2(i, 1) = ARR1(j, 7) Then
                             Desc = ARR1(j, 8)
                             TypeFabric = ARR1(j, 3)
                             AgeSex = ARR1(j, 1)
                             HTS = ARR1(j, 2)
                             Fabric = ARR1(j, 4)
                             CC = ARR1(j, 5)
                             DC = ARR1(j, 6)
                             Pic = ARR1(j, 9)
                             SizeUS = ARR1(j, 10)
                             SizeRU = ARR1(j, 11)
                       End If
                   Next
                    ARR2(i, 2) = Desc
                    ARR2(i, 3) = TypeFabric
                    ARR2(i, 4) = AgeSex
                    ARR2(i, 5) = Fabric
                    ARR2(i, 6) = SizeUS
                    ARR2(i, 7) = SizeRU
                    ARR2(i, 8) = HTS
                    ARR2(i, 9) = CC
                    ARR2(i, 10) = DC
                    ARR2(i, 11) = Pic
              End If
          
       Next


' вставляю данные 
With Range(Cells(2, 17), Cells(LR2, 27))
 .ClearContents
  .Value = ARR2
End With

сцепить ячейки по условию, Формулами счепить несоклько ячеек, при этом в некоторых случаях либо оставлять имеющееся значение, либо удалять его
 
все отлично! спасибо огромное, тема закрыта
сцепить ячейки по условию, Формулами счепить несоклько ячеек, при этом в некоторых случаях либо оставлять имеющееся значение, либо удалять его
 
Спасибо вам огромное. Незадача в том, что , если в тексте есть "-", например, ЕАЭС RU С-JO.АЖ47.В.01278/59, то он заменяется за точку с запятой.

Выводит так ЕАЭС RU С;JO.АЖ47.В.01278/59
Можете помочь учесть этот нюанс в формуле?
сцепить ячейки по условию, Формулами счепить несоклько ячеек, при этом в некоторых случаях либо оставлять имеющееся значение, либо удалять его
 
Текст состоит из букв и цифр формата "ЕАЭС N RU Д-RJ.АВ88.В.78954/20"
Или RU.68.РЦ.09.0456.E.07856257.04.14

Т.е. в ячейке набор букв и цифр может быть не сплошкой (1 слово), но содержать пробелы и знаки типа "/" и "-"
Сжимать пробелы нельзя. Надо сохранить заданную в ячейке структуру
Изменено: all L - 18.08.2020 12:48:51
сцепить ячейки по условию, Формулами счепить несоклько ячеек, при этом в некоторых случаях либо оставлять имеющееся значение, либо удалять его
 
Добрый день, форумчане

Есть таблица. Нужно сцепить несколько ячеек внутри строки по условию: если текст есть, то сцепляем, если стоит "-", то пропускаем такое значение. Значения сцепливаются через ";". При этом лишних точек с запятой там, где ничего не объединяется, быть не должно.

Моя реализация задачи в файле во вложении
Сцепить надо данные из столбцов А & Е & G
Мои попытки в столбце Q. А то, какой результат ожидается - в столбце R
Видно, что где-то у меня неправильный подход, т.к. для некоторых случаев формула работает неверно.


Очень нужна ваша помощь, если возможно, помогите с вариантом, как сцепить корректно.
Сцепить ячейки по условию
 
Добрый день.


Есть таблица. В которой в определенных ячейках может быть либо текст, либо прочерк вида "-"

Помогите сцепить данные из определенных ячеек, если в них нет "-". Разделитель при сцеплении ;

Пример таблицы и ожидаемого результата ниже и во вложении

Столбец1 Столбец1 Столбец1 Столбец1 Столбец1 Ожидаемый результат
тест1 текст2 текст3 текст1;текст2;текст3
- - - -
- текст4 - текст4
текст5 - текст6 текст5;текст6
- - текст7 текст7
текст8 текст9 текст8;текст9
VBA Перебор массива с поиском разных значений и выводом в переменную - как эффективнее ?
 
Hugo,интересно. Спасибо. Наверное, этого и хотелось: перебрать 1 раз и выбирать нужное. Обработка ошибок на повтор или отсутствие будет.

Спасибо!
VBA Перебор массива с поиском разных значений и выводом в переменную - как эффективнее ?
 
vikttur,Спасио. Попробую с select case.

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

Имеется таблица с данными по товарам, людям, поставщикам и пр. Некоторые столбцы заполняю данными используя процедуры, написанные на VBA
Но реалии таковы, что иногра в существующую таблицу приходится добавлять новые столбцы.

Посетила мысль, что, если в макросах ссылаться на номера столбцов не прямо (1, 2, 3 и т.д.), а предварительно проводя поиск номера нужного столбца по его названию, то это позволит свободно вставлять столбцы в таблицу и не беспокоиться о том, что в ранее написанном макросе надо изменить в диапазоне столбец 3 на 4, т.к. перед ним вставили еще один.
Для того, чтобы пробежаться по всем столбцам в шапке таблицы (это у меня строка 1) использовался ранее метод .Find и все работало до тех пор, пока не возникла необходимость провести поиск, когда некоторые столбцы скрыты. И оказалось, что Find не работает.

Пробуду перейти на поиск через массив (ниже пример кода с комментарием, что делаю).

Вопрос следующий: мне кажется, я делаю этот поиск в массиве неэффективно. (через множество if).
Наверняка можно оптимизировать мой поиск. Если есть предложения, помогите, пожалуйста.
Код
' определяем массив
    MyArr = Range("A1", Cells.SpecialCells(11)).Value

' происк провожу по 1 строке по всем столбцам (это шапка таблицы с заголовками)
 For lc = 1 To UBound(avArr, 2)
        
'через условие в массиве ищу ячейку, где встречается нужное значение и передаю в переменную номер найденного столбца 
            If MyArr(lr, lc) = "Страна происхождения" Then
' передаю в переменную iCOO номер столбца, где в заголовке "страна происхождения" 
             iCOO = Cells(lr, lc).Column
            End If
            If MyArr(lr, lc) = "Наименование" Then
' передаю в переменную iDescr номер столбца, где в заголовке "Наименование" 
            iDescr = Cells(lr, lc).Column
            End If
            If MyArr(lr, lc) = "Название завода" Then
' передаю в переменную iFactory номер столбца, где в заголовке "Название завода" 
            iFactory = Cells(lr, lc).Column
            End If
  Next lc
Не работает функция CBR
 
Добрый день,

подскажите, а у всех ли функция CBR при выборе даты на следующий рабочий день (например, сегодня я хочу подтянуть завтрашний курс USD) выдает не завтрашний курс, а сегодняшний?

На сайте ЦБ курс USD на 10/04/2020 - 74,6050. На функция возвращает 75,7499 (т.е. сегодняшний)
Аналогично с кнопкой "Курс валют"

Спасибо!
VBA - поиск всех значений по заданному условию и обновление связанных данных, FindNext в цикле ошибка
 
Спасибо большое. Все удалось решить с вашей помощью!
VBA - поиск всех значений по заданному условию и обновление связанных данных, FindNext в цикле ошибка
 
Добрый день.

Решаю следующую задачу.

Имеется лист excel, где отмечаются оплаты поступивших счетов (номер счета, сумма, запланированная дата оплаты и пр).

Надо из этого листа брать даты запланированных на оплату счетов, по которым нет отметки "ok" об оплате, находить на соседнем листе по номеру поставки эти счета (могут упоминаться на листе больше 1 раза). И, если находится, в определенном столбце проставлять  запланированную дату оплаты.


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


Файл с кодом и пояснениями прилагаю.

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

Задача состоит в следующем. В одной общей папке, допустим ее имя "Очень большая папка" есть большое количество подпапок, в которых в свою очередь также могут быть подпапки, а в них еще подпапки.
Некоторые из таких папок имеют определенное имя, например "печать". И в таких папках может лежать нужный файл excel с маской имени "файл 1*". Или там же может лежать другой нужный файл с маской имени "файл 2*"


Задача: пройтись по всем папкам и подпапкам в "Очень большой папке". заходить во все подпапки и искать папку с именем "печать".

   Если находишь, заходить в нее и искать в ней файлы с заданной маской имени: либо "файл 1*", либо  "файл 2*".

     Если находится "файл 1", открывать его и копировать из него определенный лист в общий файл на лист 1
     Если находится "файл 2", открывать его и копировать из него определенный лист в этот же общий файл на лист 2

Идеально, если будет вестись лог-файл, куда запишутся адреса тех папок с именем "печать", в которых не был найден файл ни с маской "файл 1", ни с маской "файл 2"

все файлы с шаблонами данных предоставлю. На вопросы, если что-то неточно описано, отвечу.

Спасибо за внимание, Наталья
Скопировать из тела письма Outlook данные в эксель VBA, Скопировать из тела письма Outlook данные в эксель VBA
 
Добрый день, уважаемые форумчане.


У меня такая задача. в папке сохранено много писем в формате msg.

Макрос их открывает последовательно и надо, чтобы текст из открытого письма копировался в файл эксель.

Как обратиться к телу письма outlook и скопировать эти данные?

Я пытаюсь создать переменную strBody, связать ее с телом открытого письма и потом ее скопировать

   strBody = openMsg.Body
   strBody.Copy

ругается на строку копирования. Object required.

Где я ошибаюсь?
VBA Передать в переменную часть текста из ячейки по условию
 
Добрый день,

Имею таблицу, в которой содержится название компании и объект-склад.

Выглядит таблица так:
Объекты
-
ООО   "Компания-Л" (Склад-Лес) МОСКВА
ООО   "Компания и сыновья" (Склад-1-ый Терминал) Останкино
ООО   "Компания и сыновья" ТРЦ Авиапарк
ООО   "Компания и сыновья" ТЦ Какой-то еще
Что требуется:

Частью кода процедуры является передача в переменную части текста из таблицы. А именно, всего, что содержится после закрывающих кавычек. Т.е. в случае с первым названием переменная должна получить (Склад-Лес) МОСКВА  вместо ООО   "Компания-Л" (Склад-Лес) МОСКВА


Ниже код мой. Хочу в переменную AddressName записать кусок текста, обрезая все до последних кавычек + пробел
Работает, но как-то неверно.
Код
    With Sheets("Адреса")
      jLastRow = ThisWorkbook.Sheets("Адреса").Cells(Rows.Count, 1).End(xlUp).Row  

        For i = 3 To jLastRow
               Set rRange = .Cells(i, 1)
                 n11 = InStr(1, rRange, """")
                 n22 = InStr(n11 + 1, rRange, """")
                 AddressName = Right(rRange, n22 + 1)

        Next
    End With

Помогите разобраться, где ошибка и как ее исправить.
Файл с примером прилагаю
PLEX. Перестала работать функция вставки курсов валют на заданную дату, Перестала работать функция вставки курсов валют на заданную дату
 
Плюсуюь к вопросу. Вчера вечером, пробовали на 2 разных машинах

Выдает ошибку "Нет данных"
Отслеживание остатков платежей по мере поступления новых оплат, динамическое уменьшение суммы с сохранением данных
 
Андрей VG,Спасибо Вам большое. Оказывается, действительно, не знаю )))
Отслеживание остатков платежей по мере поступления новых оплат, динамическое уменьшение суммы с сохранением данных
 
Добрый день,
Подскажите, можно ли как-то решить такой вопрос.

по каждой поставке каждому поставщику я веду таблицу с суммой оплаты, суммой поставки и разницей между поставкой и оплатой.
Типа такой:
ПолучательСумма поставкиОплаченоОстаток (Сумма поставки -   Оплачено) по получателю
поставка 1А100200100
поставка 2Б20025050
В столбце Остаток - формула условия суммесли по получателю (видно формулу в файле-примере) во вложении

О чем я мечтаю и не могу придумать, как реализовать:
Чтобы при добавлении еще одной поставки получателю А в столбце остаток было видно, как распределялась сумма Оплачено
Т.е. чтобы результат был такой:
Для поставки 1 видно, что остаток 100 (т.к. оплатили 200, а поставка 100)
А для поставки 3 остаток уже 50, т.е. вычитается сумма поставки из остатка
ПолучательСумма поставкиОплаченоОстаток (Сумма поставки -   Оплачено) по получателю
поставка 1А100200100
поставка 2Б20025050
поставка 3А50050

Пока вижу способ руками менять в формуле ячейку с остатком, но это не то, чего хотелось бы, хочется, чтобы этот столбец вычислялся без постоянного изменения формулы.
Подскажите, такое возможно?
VBA - курс валюты с сайта ЦБ - как прервать процедуру при отсутствии соединения с интернетом
 
Добрый день, уважаемые форумчане.

Имеется файл, в который автоматически накопительным итогом проставляются даты (от последней заполненной и до текущей) и курс USD с сайта ЦБ РФ.
в столбец А автоматически через VBA проставляются даты
в столбец В - курсы валюты на соответствующую дату
Затем
Все, вроде, работает. Кроме тех случаев, когда у пользователя нет соединения с интернетом и курс, соответственно, поставиться не может.

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

Файл с процедурой прилагаю.
Спасибо
VBA - проставление дат при открытии файла
 
Уважаемые форумчане,

Имею таблицу, в столбце А - даты (формат дд.мм.гггг).
Что хочу: методом VBA при открытии файла находится последняя непустая ячейка, считывается указанная в ней дата и со следующей за последней заполненной ячейки проставляются даты вплоть до текущей.
Т.е. Если в таблице последняя дата - 12 мая, то макрос должен добавить вниз дату за 13, 14 и 15 (сегодняшнюю) мая. Выходные, праздничные и прочие дни не пропускаются. Проставляются все даты подряд.
Т.е. было:
11.05.2015
12.05.2015
стало:
11.05.2015
12.05.2015
13.05.2015
14.05.2015
15.05.2015
Собственно, 1 шаг - нахождение последней непустой ячейки реализовано (во вложении) .
А дальше как? Помогите с реализацией или похожими примерами.
спасибо!
Ошибка #ЧИСЛО! в функции ОКРВВЕРХ, Расчет более выгодного курса валюты и простоев
 
Добрый день, форумчане.

Во вложении маленькая табличка, по которой считаю размер пошлины по курсам на "сегодня" и "завтра" с целью понять, при каком курсе удобнее подавать декларацию.
Поскольку иногда затягивание с подачей может привести к простою груза - одновременно считаю и то, сколько дней простоя можно себе позволить (или нельзя) при сегодняшнем курсе.
Вопрос: как избежать периодически возникающей ошибки #ЧИСЛО! в формуле с использованием функции ОКРВВЕРХ если число отрицательное (кроме варианта руками менять аргумент "точность" на отрицательный)? Может, я вообще неправильно использую эту фукнцию и лучше использовать другую?
Спасибо
VBA - вывод названий папок в которых НЕТ нужного файла, поиск в проводнике файлов по маске
 
Добрый день, форумчане.
Имею код, который по маске ищет в указанной папке нужную подпапку и в ней файл по определенной маске.
Если файл находится, он открывается, с ним производятся действия.
Что хочу: хочу, чтобы, если в папке такой файл не был найден, формировался файл в формате .txt со списком папок, в которых нужный файл не был найден.
Кусок моего кода, где, после указания папок, в которых надо искать идет их перебор:
Код
For f = 1 To ListFolders.ListCount
    n = 0
    fpatch = ListFolders.List(f - 1)
    Set fso = CreateObject("scripting.filesystemobject")
    Set sfol_1 = fso.GetFolder(fpatch)
If fpatch <> 0 Then
           For Each sfol_2 In sfol_1.SubFolders
                If sfol_2.Name = "на печать" Or sfol_2.Name = "НА ПЕЧАТЬ" Or sfol_2.Name = "На печать" Or sfol_2.Name = "Для печати" Or sfol_2.Name = "ДЛЯ ПЕЧАТИ" Or sfol_2.Name = "для печати" Then
                    For Each fil In sfol_2.Files
                        If fil.Name Like "*SPEC.xls*" Or fil.Name Like "*SPECIF.xls" Or fil.Name Like "*SPECIF.xlsx" Or fil.Name Like "*SPEC.xlsx*" Then
 
               ПРОЦЕДУРА РАБОТЫ С ОТКРЫТЫМ ФАЙЛОМ

            End If
                    Next
                    
                End If
          Next
End If
Next f
Помогите, пожалуйста.
VBA поиск повторяющейся ставки для каждого артикула с объединением значений
 
Hugo,все получилось, спасибо.
визуально пустая ячейка по факту не пустая. Определить, что в ней
 
Все_просто,да, какой-то непечатаемый символ. Правда, не удалось определить, какой
.Alexander88, спасибо! Помогло:
Код
If Len(Cells(r, 1)) = 0 Then Rows(r).Delete 
Похоже, закрыт вопрос. Спасибо большое всем, участвовавшим.
визуально пустая ячейка по факту не пустая. Определить, что в ней
 
Hugo, Да, но почему тогда моя

Код
If Application.CountA(Cells(r, 1)) = "" Then Rows(r).Delete 
не находит "это"? не так ссылаюсь?
визуально пустая ячейка по факту не пустая. Определить, что в ней
 
Уважаемые форумчане.
Имею файл.
В нем по признаку "если ячейка в столбце А пустая", удаляю строки.
Файл создается из некоей внешней программы, поэтому сталкиваюсь с такой проблемой: ячейка, выглядящая пустой не удаляется, т.к. в ней, вероятно, что-то есть. Что это - определить не могу.
Во вложении - файл, где в столбце А ячейка А2 имеет это "нечто". В файле простой код, который не отрабатывает ячейку А2 пустой и, следовательно, не удаляет строку.

Прошу помощи. Что там и как "это" закодировать, чтобы строка удалялась.

Код
        For r = lastrow To 1 Step -1
            If Application.CountA(Cells(r, 1)) = 0 Then Rows(r).Delete
            If Application.CountA(Cells(r, 1)) = "" Then Rows(r).Delete
        Next r 
Страницы: 1 2 3 След.
Наверх