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

Страницы: 1 2 3 След.
Функция по приведению в единый формат дат и периодов в таблице, Как доработать код.
 
Цитата
Ігор Гончаренко написал: Вы вместо того, чтобы обьяснить суть задачи, обьясняете как Вы ее решали и
Разве не написал?
Данные бывают такие:
Цитата
Александр написал:3 месяца YYYY г.?(ода)?
6 месяцев YYYY г.?(ода)?
9 месяцев YYYY г.?(ода)?
т.е. в данном случае это период бухгалтерской отчетности - 3, 6, 9 месяцев 2017, 2018, 2019 и т.д. годов - значение. дата может быть с окончание г., или полностью года, а может не быть ничего.

Нужно привести данные указанного формата в формат Q YYYY. Т.е. номер квартала и год.
по сути мне нужно только заменить 9 месяцев на цифру 3. 6 месяцев на 2, 3 месяца на 1.

Я и написал, что добавил вот такой блок.
Который проверяет по регулярке  "\D*\d месяц\D*(\d{2,4})\D*" значение ячейки, и если значение ячейки удовлетворяет условиям - то он должен менять 9 на 3
6 на 2 и 3 на 1.
Александр, после такого преобразования
Скрытый текст

функция уже передает переменную дальше.
Преобразование к нужному формату проходит корректно - единственный затык - функция не отрабатывает замену 9 на 3, 6 на 2 и 3 на 1.
подозреваю, что неверно написал регулярное выражение, но сколько не смотрел - не увидел ошибки.  
Изменено: Александр - 09.11.2017 13:17:36
Функция по приведению в единый формат дат и периодов в таблице, Как доработать код.
 
Добрый день, форумчане.

Столкнулся с некоторой задачей, которую пока никак не могу решить - возможно Вам покажется проще:
есть некоторая функция (код ниже), которая приводит разномастные значения дат, кварталов к единому виду - "Q YYYY".
Т.е. если у меня прописано в ячейке 30.06.2017 - функция приводит это к значению 2 2017 - т.е. номер квартала и четырехзначный номер года. Аналогично с римским обозначением квартала и т.д.
До сей поры это все у меня работало прекрасно, пока не столкнулся с необходимостью добавить в функцию новые типы данных, а именно
3 месяца YYYY г.?(ода)?
6 месяцев YYYY г.?(ода)?
9 месяцев YYYY г.?(ода)?

Соответственно в функцию я добавил блок
Код
'Проверка наличия периодов бух.отчетности
re.Pattern = "\D*\d месяц\D*(\d{2,4})\D*"

If re.Test(tempString) Then
   re.Pattern = "9"
    If re.Test(tempString) Then tempString = re.Replace(tempString, "3"): GoTo 1
    
    re.Pattern = "6"
    If re.Test(tempString) Then tempString = re.Replace(tempString, "2"): GoTo 1
    
    re.Pattern = "3"
    If re.Test(tempString) Then tempString = re.Replace(tempString, "1")
End If


Но функция все-равно не заменяет месяцы на квартал и на выходе я получаю для примера.
3 2017
6 2017
9 2017
Может кто-нибудь подскажет, что делаю не так?
Код
Option Explicit

Public Function RgxData(astring As Range) As String

Dim re As RegExp, d As Date, s$
Dim tempString
Set re = New RegExp
re.Pattern = "(-|\г.+|\(|\)| )"
re.Global = True
re.IgnoreCase = True
tempString = re.Replace(astring, "")

'Проверка наличия в строке даты
re.Pattern = "\D*(\d\d?)\.(\d\d?)\.(\d{2,4})\D*"

If re.Test(tempString) Then
RgxData = DatePart("q", DateValue(re.Replace(tempString, "$1.$2.$3"))) & DatePart("yyyy", DateValue(re.Replace(tempString, "$1.$2.$3")))
d = CDate(tempString) - 1
s = DatePart("q", d) & " " & DatePart("yyyy", d)
If s <> RgxData Then RgxData = s
Exit Function
End If

'Проверка наличия периодов бух.отчетности
re.Pattern = "\D*\d месяц\D*(\d{2,4})\D*"

If re.Test(tempString) Then
   re.Pattern = "9"
    If re.Test(tempString) Then tempString = re.Replace(tempString, "3"): GoTo 1
    
    re.Pattern = "6"
    If re.Test(tempString) Then tempString = re.Replace(tempString, "2"): GoTo 1
    
    re.Pattern = "3"
    If re.Test(tempString) Then tempString = re.Replace(tempString, "1")
End If

'Проверка наличия в строке квартала написаного римской цифрой, буквами латиницы "I" и "V"
re.Pattern = "\D*(i{1,3}(?!i)v?(?!v))\D*(кв)?\D+(\d{2,4})\D*"

If re.Test(tempString) Then
    re.Pattern = "iv"
    If re.Test(tempString) Then tempString = re.Replace(tempString, "4"): GoTo 1
    
    re.Pattern = "iii"
    If re.Test(tempString) Then tempString = re.Replace(tempString, "3"): GoTo 1
    
    re.Pattern = "ii"
    If re.Test(tempString) Then tempString = re.Replace(tempString, "2"): GoTo 1
    
    re.Pattern = "i"
    If re.Test(tempString) Then tempString = re.Replace(tempString, "1")
End If

1:

'Проверка наличия в строке квартала написаного арабской цифрой
re.Pattern = "\D*(\d)\D*(кв)?\D+(\d{2,4})\D*"

If re.Test(tempString) Then
RgxData = re.Replace(tempString, "$1 $3")
Exit Function
End If

'Проверка наличия в строке квартала написаного арабской цифрой
re.Pattern = "\D*(\d{4})\D*"

If re.Test(tempString) Then
RgxData = re.Replace(tempString, "$1")
Exit Function
End If

RgxData = "Период не определен!"

End Function

Адрес по столбцам
 
Цитата
Андрей VG написал:
Свет клином не сошёлся же на нём? Иногда и Яндекс не плох.
Это факт. Только сам я такой парсер в VBA не напишу.
Адрес по столбцам
 
Андрей, спасибо.
Идея решить проблему регулярками  (правда в веб) меня посетила, только вариантов адресов очень много.
Не получится все запихнуть. на Вашем примере из 5 адресов макрос только один разобрал. Примеры адресов ниже.

Цитата
tolstak написал: нормировать через запрос к гугл-картам.
Спасибо, tolstak. Идея супер. Если б сработало - было б мне счастье.
Да вот беда - из 5 тестовых адресов гугл нашел только 2.
2, 3 и 5 адрес он не ищет ни через парсер, ни через собственно сайт maps.google
Хотя яндекс карты такие адреса находят. А такую

187026 Ленинградская область, Тосненский район, город Никольское   Отрадненское шоссе дом 3
656905, Россия,   Алтайский край, г. Барнаул, поселок Куета 32, проезд Южный, 10
108818, г. Москва,   ул. Нововатутинская 3-я, д. 13, корп. 1, пом. 2
142184, г.Климовск,   Московской области, проспект 50 лет Октября, д.21а
РФ, РБ, 450022, г.   Уфа, ул. Менделеева, 137
Изменено: Александр - 26.09.2017 16:17:21
Адрес по столбцам
 
Добрый день, форумчане.

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

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

Буду благодарен за наводку - гугл результатов не дал толковых.
Автоматическая подстановка значения в соседнюю ячейку при вооде значения в ячейку
 
Цитата
kuklp написал:
if cell<>"" then        With cell.Offset(0, -1)               .Value = "Значение"               .EntireColumn.AutoFit            End With               End If
Когда знаешь - все просто)

Спасибо. То что нужно.
Автоматическая подстановка значения в соседнюю ячейку при вооде значения в ячейку
 
Добрый день, уважаемые форумчане.

Вновь прошу Вашего мудрого совета.

Есть у меня табличка, в ней небольшой код, который подставляет в соседнюю ячейку некоторое значение при изменении значения в столбце С диапазона (собственно код известный, много где в Интернете есть).
Все хорошо и работает, но дело в том, что параллельно у меня есть макрос, который после заполнения пользователем таблицы отправляет копию файла на сетевой диск, а сам файл пользователя очищает от данных.
Никак не могу сообразить, как переделать приведенный ниже код, чтобы значение в соседнюю ячейку проставлялось только если в ячейку что-то записали.
А в случае, если ячейку очистили - он не отрабатывал.

Пробовал по поиску найти, но видно не так ищу.
Код
Private Sub Worksheet_Change(ByVal Target As Range)
     
    For Each cell In Target
          x = cell.Row - 1
       If Not Intersect(cell, Range("C2:C50")) Is Nothing Then
            With cell.Offset(0, -1)
               .Value = "Значение"
               .EntireColumn.AutoFit
            End With
           
       End If
      
        
       x = x + 1
    Next cell
    
End Sub
Сохранение настроек фильтрации
 
Спасибо. Вариант классный. В принципе именно то что нужно. Правда почему-то на таблицах свыше 10 тысяч строк начинает ощутимо подвисать и представление отрабатывает секунд за 15.

Цитата
Юрий М написал: А   эта  прямо для Вас )
Да, Спасибо Юрий. Да, это подойдет. особенно если немного допилить - назначить на кнопку заполнение диапазона нужными критериями - и тогда получится то что нужно. надеюсь не будет так подтормаживать, как представления.
Изменено: Александр - 03.03.2017 22:39:27
Сохранение настроек фильтрации
 
Добрый вечер, уважаемые форумчане.
Вновь хочу спросить у Вас совета.

Итак, у меня в работе присутствует множество таблиц с большим количеством столбцов. Из этих таблиц часто приходится  делать выборки, фильтруя определенные столбцы по нужным значениям. Но вот незадача - то забудешь выставить условие на один из столбцов, то выставишь не так - и выборка получается кривая - хорошо, если замечу вовремя. Да и в целом это отнимает время. Когда операция повторяется регулярно, по несколько раз в день - это конечно выливается в определенную потерю времени.
И вот меня мучает вопрос - есть ли возможность назначить на определенную кнопку заранее заданный набор фильтров, чтобы таблица фильтровалась сразу по нескольким столбцам по одному клику. Пробовал искать на форуме что-то подобное, но не нашел (может быть неправильно искал?).

Приложил небольшой пример, чтобы объяснить наглядно.
В данном примере мне необходимо:
1. Столбец G отфильтровать, исключив ячейки Банк
2. Столбец H отфильтровать,  исключив пустые ячейки
3. Столбец К отфильтровать, оставив только пустые ячейки.
Вот если набор подобных условий можно сохранить и назначить на кнопку - было бы просто идеально. Подозреваю, что без макроса тут не обойтись, но с ними у меня сложно(
Выделение дат в календаре из списка, Неверно срабатывает правило выделения ячеек
 
Спасибо. Помогли. Понял где ошибался.
Выделение дат в календаре из списка, Неверно срабатывает правило выделения ячеек
 
Добрый вечер, форумчане.

Подскажите, что делаю не так.
Лист events, столбец E содержит даты.
В календаре хочу эти даты подсвечивать.
Создаю правило условного форматирования для формулы
Код
=НЕ(ЕОШИБКА(ПОИСКПОЗ(B5;Events!$E$2:$E$249;0)))
Но он срабатывает, если распространяется только на конкретную ячейку. Если растягивать сразу на весь календарь - подсветка где-то промахивается, где-то просто не срабатывает.
Очистка содержимого ячеек макросом
 
Спасибо большое The_Prist
Вы, как всегда, профессиональны.
Действительно, так все проходит без задержки.
Очистка содержимого ячеек макросом
 
Добрый день, форумчане.
Хочу спросить Вашего мудрого совета.

Добавил в файл (в файле 1 лист) небольшой макрос, который при сохранении копии файла очищает содержимое диапазона  D2:F90
Код
Sub saveas()
ActiveWorkbook.SaveCopyAs "C:\\" & Range("O1") & ".xls"
Dim cell As Range
For Each cell In Range("D2:F90")
    cell.ClearContents
Next
Range("O1").ClearContents
End Sub
Но вот незадача, делает он это долго - задержка при очистке составляет  - секунд 10-15, что при массовости операции даст большие потери по времени.
Подскажите, есть ли способ ускорить процесс? Может добавить условие, чтобы он очищал только непустые ячейки, а не проходил по всем? Если  да, то как?
Может еще способ есть?
Дополнительные параметры для функции СУММЕСЛИМН
 
арех, как просто - всего-лишь кавычки дописать. А я себе голову мотал.
спасибо большое! Помогли.
Дополнительные параметры для функции СУММЕСЛИМН
 
Добрый день, форумчане!
Вновь требуется Ваш мудрый совет.
Что-то сегодня голова не работает совсем.
В ячейке есть функция
Код
 =СУММЕСЛИМН(D3:D48;A3:A48;"Доп";C3:C48;1200)
Подскажите, как мне сюда добавить операцию сравнения?
Мне нужно, чтобы он суммировал значения столбца D, если значение в столбце С меньше 1200. Сейчас он суммирует, если значение равно 1200.

Или допустим, чтобы он суммировал, если значение в столбце С больше 1200, но меньше 1300
Индикатор на листе несохраненных изменений
 
Спасибо огромное, то что нужно!
Все работает.

Супер, очень помогли!
Изменено: Александр - 19.02.2015 17:20:49
Индикатор на листе несохраненных изменений
 
Цитата
Юрий М пишет: Вы уточните, что нужно на выходе?
В данном случае изменения  - это изменения. Т.е. если в указанном диапазоне поменялось любое из значений ячеек.
Цитата
Попробуйте UDF, которая возвращает состояние книги: книга сохранена = ИСТИНА, несохранена = ЛОЖЬ.
Не получается. Видно делаю не так.
значение в ячейку всегда приходит ЛОЖЬ/

Да и потом я не нашел способа настроить заливку диапазона в зависимости от сторонней ячейки.
Обычно условное форматирование распространяется на ячейки, значения которых анализируются.
Индикатор на листе несохраненных изменений
 
Да тут пример не нужен.
Применительно к любой таблице нужно, чтобы диапазон ячеек A1:L75 окрашивался пусть в красный цвет.
Если файл сохранен - зеленый, или вообще без заливки.

Первый лист в книге
Изменено: Александр - 19.02.2015 15:20:56
Индикатор на листе несохраненных изменений
 
Добрый день, уважаемые форумчане!
Возникла такая потребность - визуализировать то, что в файл вносились изменения и они не сохранены.
Например какая-нибудь ячейка меняет цвет, или значение.

Есть какие-нибудь решения подобной задачи?
Поиск значения функции
 
Ivan.kh, отлично,  через СЧЁТЕСЛИМН получилось. Спасибо огромное.

=СЧЁТЕСЛИМН('[Общий список.xlsm]Продажи'!$E$40000:$E$80000;D5;'[Общий список.xlsm]Продажи'!$B$40000:$B$80000;"капуста";'[Общий список.xlsm]Продажи'!$I$40000:$I$80000;"цветная" ;)

Скажите, если меня скажем интересует продажа не только цветная, но и белокачанная капуста -
такой вариант оптимален?

=ИЛИ(СЧЁТЕСЛИМН('[Общий список.xlsm]Продажи'!$E$40000:$E$80000;D5;'[Общий список.xlsm]Продажи'!$B$40000:$B$80000;"капуста";'[Общий список.xlsm]Продажи'!$I$40000:$I$80000;"цветная" ;) ;СЧЁТЕСЛИМН('[Общий список.xlsm]Продажи'!$E$40000:$E$80000;D5;'[Общий список.xlsm]Продажи'!$B$40000:$B$80000;"капуста";'[Общий список.xlsm]Продажи'!$I$40000:$I$80000;"белокачанная" ;) )

или можно или ввернуть прямо в СЧЁТЕСЛИМН? У меня дал ошибку на такую попытку.
Поиск значения функции
 
Если оставить первый множитель - он дает 0, хотя должен давать 1
Если оставить первое и второе дает #Н/Д
Если первое и третье дает #ЗНАЧ

Совсем я что-то сегодня запутался - на пустом месте.

Если попробовать просчитать искомые значения функцией счётесли  -работает, аналогичные функции в других книгах работают, а здесь ну на пустом месте затык
Изменено: Александр - 08.07.2013 15:37:36
Поиск значения функции
 
Поправил, все равно тоже самое
Поиск значения функции
 
)))))) Мины на капусту))) Это интересно)))
Пробовал -как-то не увидел того что нужно.
проблема видимо в формуле

=СУММПРОИЗВ((D5='[Общий список.xlsm]Продажи'!$E$2:$E$42000)*('[Общий список.xlsm]Продажи'!$B$2:$B$55151="капуста"  ;)  *('[Общий список.xlsm]Продажи'!$I$2:$I$60627="цветная"  ;)  )

На выходе дает #ЗНАЧ.
Вот и не пойму - вроде на соседнем листе аналогичная формула отрабатывает, а здесь нет.
Но там она ссылается на статичное значение, а здесь на формулу.
Изменено: Александр - 09.07.2013 01:40:38
Поиск значения функции
 
Хм, пытался сварганить пример - в примере получилось, а в боевом файле не получается. Значит ошибка в формуле.
Боевой к сожалению вывесить не могу - коммерческая информация.
Пока будем думать самостоятельно.
Поиск значения функции
 
Добрый день, гуру.
Подскажите маленький вопрос - застопорился на нем.
Как задать условием существования функции значение другой функции?
Я пишу функцию СУММПРОИЗВ, в которой три условия из которых 2 - это значения которые должны принимать другие функции.
Но он почему-то в указанном диапазоне не ищет значения. Даже ручным поиском он не ищет требуемые значения.
Макрос для проверки значений
 
Не, как-то не пошло у меня - не хочет забирать он. Нули пишет, вместо забираемых значений.

Пошел с другого края - сделал шаблонную таблицу, в которую буду выгружать данные, а там с помощью выборочного суммирования настроил на проверку значений, имеющих нужный код в соседнем столбце.
Громоздко, в лоб, но работает. Пока так. А над скриптом подумаю еще.
Макрос для проверки значений
 
ber$erk спасибо.
Это конечно совсем не то - он же складывает значения кодов а не значения столбцов в той же строке.

Конечно я слабо разбираюсь в VBA. Но попробую в выходные на основе Вашего файла сделать макрос.

Не получится - тогда в понедельник поговорим о деньгах.
Что ж - справедливо.


В любом случае спасибо, ребят!
Макрос для проверки значений
 
Цитата
LVL пишет:
Вопрос решаем
У меня вопрос: что можно сверять в балансе?


Минимально нужно сверять значения столбца "За отчетный период", в идеале все 3 столбца.

По строкам так:
1. Проверка строк первого порядка: 1300-1700

2. Проверка строк второго порядка:
2.1. Долгосрочные активы
1100-(1110+1120+1130+1140+1150+1160+1170+1180+1190)

2.2. Краткосрочные активы:
1200-(1210+1220+1230+1240+1250+1260)

2.3. Капитал и резервы
1300-(1310+1320+1340+1350+1360+1370)

2.4. Долгосрочные обязательства
1400-(1410+1420+1430+1450)

2.5. Краткосрочные обязательства
1500-(1510+1520+1530+1540+1550)

3. Отчет о финансовых результатах (лист№2)
3.1. Валовая прибыль
2100-(2110-2120)

3.2. Прибыль от продаж
2200-(2110-2120-2210-2220)

3.3. Прибыль до налогообложения
2300-(2200+2310+2320-2330+2340-2350)

3.4. Чистая прибыль
2400-(2300+2410+2430+2450+2460)

4. Расчет строк второго порядка
4.1. Расчет актива
1600-(1100+1200)

4.2. Расчет пассива
1700-(1300+1400+1500)

4.3.перекрестная проверка актива-пассива
(1100+1200)-(1300+1400+1500)

Т.е. в результате на выходе макрос должен дать табличку 14х3, где 14 - 13 проверяемых показателей+шапка таблицы, а 3 - число проверяемых отчетных периодов.

В идеале вся таблица должна быть заполнена нулями - это будет обозначать, что отчетность составлена корректно.
Макрос для проверки значений
 
Добрый день, Уважаемые форумчане.

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

Существует некая система, содержащая финансовые данные. В этой системе есть кнопка, которая выкидывает эти данные в таблицу excel (во вложении пример - обратите внимание - 2 листа).

Мне нужно сделать макрос, который при запуске будет проводить первичную проверку отчетности на сходимость (набор определенных строк в сумме должен совпадать с другой определенной строкой).
Определять, какие строки нужно складывать макрос должен по соседнему столбцу "Код стр."

Подробные формулы (значения кодов строк которые надо складывать и вычитать) для проверки я могу предоставить, если задача будет иметь решение.

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

Резюмируя алгоритм должен быть таким:
1. Нажимаем на кнопку - открывается таблица.
2. Запускаем макрос, в рандомном месте на листе выводятся результаты нескольких вычислений по обоим листам.

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

- Порядок строк не всегда именно такой  - могут присутствовать промежуточные, поэтому надо ориентироваться именно на код строки.


Подскажите, Гуру, есть ли возможность решить задачу в этом ключе?
Отключение(приоставнока) функций, Макрос для облегчения работы
 
Добрый вечер, Гуру)

Ситуация такая - долго консолидирвал в базу множество листов с самыми различными данными, на каждом листе уже сейчас до 20 тыс строк.
На каждом листе - 2-3 столбца  - функции и сложные по множеству условий.
Т.е. представьте - 1 лист уже содержит 60 тыс функций завязанных на 3-4 массива.
А их сейчас 10 листов, т.е. около 600 тыс ячеек перевязанных друг с другом не по одному разу.
А помимо этого еще есть несколько макросов.


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

Но вот беда - тормозит. Любое изменение данных в таблицах влечет подвисание на пару минут. Что мешает.

Хочу спросить Вас, господа - возможно ли сделать макрос, который отключает выполнение функций в определенном диапазоне?

Скажем - есть на листе ряд галочек (чек-боксов) с названием диапазонов. Отжал галку - ёксель забыл про определенный диаазон с функциям. Нажал галочку  - вновь  проводится рассчет по диапазону.

Может кто-то сталкивался с подобной проблемой.

PS: Да простят меня модераторы и форумчане  - без примера. затенять закрытые данные  - с ума сойдешь в таком файле. А создавать пример - тоже не отобразишь всего, что есть.

Буду рад любым предложениям - если что, я уже сам подгоню под свои условия подсказанную идею, или макрос.
Знаю, наверняка сейчас многие кинутся говорить, что такие объемы это надо минимум в аccess, а еще лучше на oracle или что там есть. Выбор обусловлен технологическими особенностями, да и не умею я особо с access.
Страницы: 1 2 3 След.
Наверх