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

Страницы: 1
Вопрос по отчету в VB необходимо вывести столбец Протокола не обновлявшего более 7 дней с последний даты ввода комментария
 
При формирования отчета в VB:

Set objExcel = CreateObject("Excel.Application")

Set objWorkbook = objExcel.Workbooks.Add

objWorkbook.Sheets.Add

Set objSummarySheet = objWorkbook.Worksheets(1)

objSummarySheet.Name = "Summary"

'==================1 вкладка==============================

objExcel.Sheets("Summary").Select

'заливает цветом - диапазон

objExcel.Range(objExcel.Cells(1, 1), objExcel.Cells(1, 19)).Interior.ColorIndex = 27

'выравнивание текста шапки

With objExcel.Range(objExcel.Cells(1, 1), objExcel.Cells(1, 19))

   .Font.Bold = True

   .Font.Italic = True

   .HorizontalAlignment = 3

   .VerticalAlignment = 2

   .WrapText = True

End With

objExcel.Cells(1, 1).Value = " ID"

objExcel.Cells(1, 2).Value = " Услуга"

objExcel.Cells(1, 3).Value = " Группа"

objExcel.Cells(1, 4).Value = " Тип_запроса"

objExcel.Cells(1, 5).Value = " Статус_(Alias)"

objExcel.Cells(1, 6).Value = " Способ_обращения_(полный)"

objExcel.Cells(1, 7).Value = " Инициатор"

objExcel.Cells(1,    .Value = " Поданные от одного инициатора более 3-х раз"

objExcel.Cells(1, 9).Value = " Время_регистрации_(создания)"

objExcel.Cells(1, 10).Value = " Время_принятия_в_работу"

objExcel.Cells(1, 11).Value = " Время_выполнения_(дата)"

objExcel.Cells(1, 12).Value = " Время_закрытия"

objExcel.Cells(1, 13).Value = " Код_выполнения"

objExcel.Cells(1, 14).Value = " Краткое_описание"

objExcel.Cells(1, 15).Value = " Описание"

objExcel.Cells(1, 16).Value = " Решение"

objExcel.Cells(1, 17).Value = " Ответственный"

objExcel.Cells(1, 18).Value = " Комментарии"

objExcel.Cells(1, 19).Value = " Не заполненный Протокол"

Set objRset = Statistics.Database.CreateRecordset("SELECT * FROM request", 3)

i = 1

Do While Not objRset.EOF

  i = i + 1

  objExcel.Cells(i, 1).Value = objRset.Field("ID_(String)")

  objExcel.Cells(i, 2).Value = objRset.Field("Услуга")

  objExcel.Cells(i, 3).Value = objRset.Field("Группа")

  objExcel.Cells(i, 4).Value = objRset.Field("Тип_запроса")

  objExcel.Cells(i, 5).Value = objRset.Field("Статус_(Alias)")

  objExcel.Cells(i, 6).Value = objRset.Field("Способ_обращения_(полный)")

  objExcel.Cells(i, 7).Value = objRset.Field("Инициатор")

  objExcel.Cells(i, .FormulaR1C1 = "=COUNTIF(C[-1], RC[-1])>3"

  objExcel.Cells(i, 9).Value = objRset.Field("Время_регистрации_(создания)")

  objExcel.Cells(i, 10).Value = objRset.Field("Время_принятия_в_работу")

  objExcel.Cells(i, 11).Value = objRset.Field("Время_выполнения_(дата)")

  objExcel.Cells(i, 12).Value = objRset.Field("Время_закрытия")

  objExcel.Cells(i, 13).Value = objRset.Field("Код_выполнения")

  objExcel.Cells(i, 14).Value = objRset.Field("Краткое_описание")

  objExcel.Cells(i, 15).Value = objRset.Field("Описание")

  objExcel.Cells(i, 16).Value = objRset.Field("Решение")

  objExcel.Cells(i, 17).Value = objRset.Field("Ответственный")

  objExcel.Cells(i, 18).Value = objRset.Field("Комментарии")

  objExcel.Cells(i, 19).FormulaR1C1 = "=IF(TODAY()-7>--MID(RC [-1], FIND(CHAR(1), SUBSTITUTE(RC[-1], ""["", CHAR(1), LEN(RC [-1]) -LEN(SUBSTITUTE (RC[-1], ""["", """")))) + 5, 10), ""Comment is not updated"", ""Everything is OK"")"

  objRset.MoveNext

  Loop

  objRset.Close

' формирование ширины ячеек

objExcel.Range(objExcel.Cells(1, 1), objExcel.Cells(1, 1)).ColumnWidth = 11

objExcel.Range(objExcel.Cells(1, 2), objExcel.Cells(1, 2)).ColumnWidth = 20

objExcel.Range(objExcel.Cells(1, 3), objExcel.Cells(1, 3)).ColumnWidth = 20

objExcel.Range(objExcel.Cells(1, 4), objExcel.Cells(1, 4)).ColumnWidth = 20

objExcel.Range(objExcel.Cells(1, 5), objExcel.Cells(1, 5)).ColumnWidth = 15

objExcel.Range(objExcel.Cells(1, 6), objExcel.Cells(1, 6)).ColumnWidth = 21

objExcel.Range(objExcel.Cells(1, 7), objExcel.Cells(1, 7)).ColumnWidth = 17

objExcel.Range(objExcel.Cells(1, 8), objExcel.Cells(1, 8)).ColumnWidth = 20

objExcel.Range(objExcel.Cells(1, 9), objExcel.Cells(1, 9)).ColumnWidth = 45

objExcel.Range(objExcel.Cells(1, 10), objExcel.Cells(1, 10)).ColumnWidth = 50

objExcel.Range(objExcel.Cells(1, 11), objExcel.Cells(1, 11)).ColumnWidth = 50

objExcel.Range(objExcel.Cells(1, 12), objExcel.Cells(1, 12)).ColumnWidth = 20

objExcel.Range(objExcel.Cells(1, 13), objExcel.Cells(1, 13)).ColumnWidth = 12

objExcel.Range(objExcel.Cells(1, 14), objExcel.Cells(1, 14)).ColumnWidth = 50

objExcel.Range(objExcel.Cells(1, 15), objExcel.Cells(1, 15)).ColumnWidth = 20

objExcel.Range(objExcel.Cells(1, 16), objExcel.Cells(1, 16)).ColumnWidth = 45

objExcel.Range(objExcel.Cells(1, 17), objExcel.Cells(1, 17)).ColumnWidth = 50

objExcel.Range(objExcel.Cells(1, 18), objExcel.Cells(1, 18)).ColumnWidth = 50

objExcel.Range(objExcel.Cells(1, 19), objExcel.Cells(1, 19)).ColumnWidth = 50

sDate = CStr(Year(Now())) + "-" + CStr(Month(Now())) + "-" + CStr(Day(Now()))

objExcel.DisplayAlerts = False

objWorkbook.SaveAs("C:\Reports\Отчет Инициатор -" + sDate + ".xls")

objWorkbook.Close

objExcel.DisplayAlerts = True

objExcel.Quit

при правильной формуле может она давать ошибку?
в Эксель данная таблица выводит все правильно,ЕСЛИ(СЕГОДНЯ()-7>--ПСТР(P2;НАЙТИ(СИМВОЛ(1);ПОДСТАВИТЬ(P2;"[";СИМВОЛ(1);ДЛСТР(P2)-ДЛСТР(ПОДСТАВИТЬ(P2;"[";""))))+5;10);"Комментарий не обновлён";"Всё ОК"),
но в VB "=IF(TODAY()-7>--MID(RC [-1], FIND(CHAR(1), SUBSTITUTE(RC[-1], ""["", CHAR(1), LEN(RC [-1]) -LEN(SUBSTITUTE (RC[-1], ""["", """")))) + 5, 10), ""Comment is not updated"", ""Everything is OK"")" выводит ошибку
Изменено: katty_23 - 28.11.2019 13:57:28
Отобразить последнюю дату ячейки с текстом
 
Цитата
Wiss написал:
Увидеть бы что именно Вы пишете... У меня в файле-примере есть нормальная рабочая формула. У Вас точно не хватает кавычек в начале. Формула для программы это текст, текст должен быть в кавычках.objExcel.Cells(i, 19).FormulaR1C1 = "= Формула"
При формирования отчета в VB:

objExcel.Cells(1, 1).Value = " ID"

objExcel.Cells(1, 2).Value = " Услуга"

objExcel.Cells(1, 3).Value = " Группа"

objExcel.Cells(1, 4).Value = " Тип_запроса"

objExcel.Cells(1, 5).Value = " Статус_(Alias)"

objExcel.Cells(1, 6).Value = " Способ_обращения_(полный)"

objExcel.Cells(1, 7).Value = " Инициатор"

objExcel.Cells(1,8)    .Value = " Поданные от одного инициатора более 3-х раз"

objExcel.Cells(1, 9).Value = " Время_регистрации_(создания)"

objExcel.Cells(1, 10).Value = " Время_принятия_в_работу"

objExcel.Cells(1, 11).Value = " Время_выполнения_(дата)"

objExcel.Cells(1, 12).Value = " Время_закрытия"

objExcel.Cells(1, 13).Value = " Код_выполнения"

objExcel.Cells(1, 14).Value = " Краткое_описание"

objExcel.Cells(1, 15).Value = " Описание"

objExcel.Cells(1, 16).Value = " Решение"

objExcel.Cells(1, 17).Value = " Ответственный"

objExcel.Cells(1, 18).Value = " Комментарии"

objExcel.Cells(1, 19).Value = " Не заполненный Протокол"

Set objRset = Statistics.Database.CreateRecordset("SELECT * FROM request", 3)

i = 1

Do While Not objRset.EOF

   i = i + 1

   objExcel.Cells(i, 1).Value = objRset.Field("ID_(String)")

   objExcel.Cells(i, 2).Value = objRset.Field("Услуга")

   objExcel.Cells(i, 3).Value = objRset.Field("Группа")

   objExcel.Cells(i, 4).Value = objRset.Field("Тип_запроса")

   objExcel.Cells(i, 5).Value = objRset.Field("Статус_(Alias)")

   objExcel.Cells(i, 6).Value = objRset.Field("Способ_обращения_(полный)")

   objExcel.Cells(i, 7).Value = objRset.Field("Инициатор")

   objExcel.Cells(i, 8).FormulaR1C1 = "=COUNTIF(C[-1], RC[-1])>3"

   objExcel.Cells(i, 9).Value = objRset.Field("Время_регистрации_(создания)")

   objExcel.Cells(i, 10).Value = objRset.Field("Время_принятия_в_работу")

   objExcel.Cells(i, 11).Value = objRset.Field("Время_выполнения_(дата)")

   objExcel.Cells(i, 12).Value = objRset.Field("Время_закрытия")

   objExcel.Cells(i, 13).Value = objRset.Field("Код_выполнения")

   objExcel.Cells(i, 14).Value = objRset.Field("Краткое_описание")

   objExcel.Cells(i, 15).Value = objRset.Field("Описание")

   objExcel.Cells(i, 16).Value = objRset.Field("Решение")

   objExcel.Cells(i, 17).Value = objRset.Field("Ответственный")

   objExcel.Cells(i, 18).Value = objRset.Field("Комментарии")

   objExcel.Cells(i, 19).FormulaR1C1 = "=IF(TODAY()-7>--MID(RC [-1], FIND(CHAR(1), SUBSTITUTE(RC[-1], ""["", CHAR(1), LEN(RC [-1]) -LEN(SUBSTITUTE (RC[-1], ""["", """")))) + 5, 10), ""Comment is not updated"", ""Everything is OK"")"

   objRset.MoveNext

   Loop

   objRset.Close

при правильной формуле может она давать ошибку?
в Эксель данная таблица выводит все правильно,ЕСЛИ(СЕГОДНЯ()-7>--ПСТР(P2;НАЙТИ(СИМВОЛ(1);ПОДСТАВИТЬ(P2;"[";СИМВОЛ(1);ДЛСТР(P2)-ДЛСТР(ПОДСТАВИТЬ(P2;"[";""))))+5;10);"Комментарий не обновлён";"Всё ОК"),
но в VB "=IF(TODAY()-7>--MID(RC [-1], FIND(CHAR(1), SUBSTITUTE(RC[-1], ""["", CHAR(1), LEN(RC [-1]) -LEN(SUBSTITUTE (RC[-1], ""["", """")))) + 5, 10), ""Comment is not updated"", ""Everything is OK"")" выводит ошибку
Изменено: katty_23 - 28.11.2019 11:20:00
Отобразить последнюю дату ячейки с текстом
 
Цитата
Wiss написал:
objExcel.Cells(i, 19).FormulaR1C1 = "=IF(TODAY()-7>--MID(RC [-1],FIND(CHAR(1),SUBSTITUTE(RC[-1],""["",CHAR(1),LEN(RC [-1) -LEN(SUBSTITUTE(RC[-1],""["","""")))) +5,10),""Комментарий не обновлён"",""Всё ОК"")"
objExcel.Cells(i, 19).FormulaR1C1 = "=IF(TODAY()-7>--MID(RC [-1], FIND(CHAR(1), SUBSTITUTE(RC[-1], ""["", CHAR(1), LEN(RC [-1]) -LEN(SUBSTITUTE (RC[-1], ""["", """")))) + 5, 10), ""Comment is not updated"", ""Everything is OK"")"  

Исправила,но все равно ошибка=(
Изменено: katty_23 - 28.11.2019 10:51:48
Отобразить последнюю дату ячейки с текстом
 
для отчета в VBA правильно написала вроде,но все равно ошибка  
objExcel.Cells(i, 19).FormulaR1C1 = "=IF(TODAY()-7>--MID(RC [-1],FIND(CHAR(1),SUBSTITUTE(RC[-1],""["",CHAR(1),LEN(RC [-1) -LEN(SUBSTITUTE(RC[-1],""["","""")))) +5,10),""Комментарий не обновлён"",""Всё ОК"")"
Отобразить последнюю дату ячейки с текстом
 
Polkilo,да

Цитата
Wiss написал: Без файла-примера, конечно, фиг разберёшься
изменено по вашим рекомендациям  и вышла ошибка ''Невозможно создать данные  Error:Unexpected error "
Код
 =IF(TODAY()-7>--MID(RC [-1], FIND(CHAR(1), SUBSTITUTE(RC[-1], ""["", CHAR(1), LEN(RC [-1) -LEN(SUBSTITUTE (RC[-1], ""["", """")))) + 5, 10), ""Comment is not updated"", ""Everything is OK"")
Отобразить последнюю дату ячейки с текстом
 
Здравствуйте!Ранее писала на форум написать формулу для столбца Комментарий не обновлявшего более 7 дней с последний даты ввода комментария

Например:
[ вс 08.09.2019 22:16:21 ПП - Иван Иванов - 0-Приостановлен ]: Отложено на 20.09.2019
[ вт 08.10.2019 7:53:32 ДП - Иван Иванов  - 0-Приостановлен ]:
Отложено на 25.10.2019

Помог Polkilo:
=ЕСЛИ(СЕГОДНЯ()-7>--ПСТР(P2;НАЙТИ(СИМВОЛ(1);ПОДСТАВИТЬ(P2;"[";СИМВОЛ(1);ДЛСТР(P2)-ДЛСТР(ПОДСТАВИТЬ(P2;"[";""))))+5;10);"Комментарий не обновлён";"Всё ОК")

в стиле ССЫЛОК R1C1
=ЕСЛИ(СЕГОДНЯ()-7>--ПСТР(RC[-1];НАЙТИ(СИМВОЛ(1);ПОДСТАВИТЬ(RC[-1];"[";СИМВОЛ(1);ДЛСТР(RC[-1])-ДЛСТР(ПОДСТАВИТЬ(RC[-1];"[";""))))+5;10);"Комментарий не обновлён";"Всё ОК")

НО теперь необходимо написать для VB выгружал данные в стиле ССЫЛОК R1C1
при изменении данной формулы не выходят данные
=IF(TODAY()-7>--MID(RC [-1],FIND(CHAR(1),SUBSTITUTE(RC [-1],"[",CHAR(1),LEN(RC [-1])-Len(SUBSTITUTE(RC [-1], "[", "")))) + 5, 10),"Comment is not updated", "Everything is OK")"
Изменено: katty_23 - 28.11.2019 11:16:51
Отобразить последнюю дату ячейки с текстом
 
Цитата
Polkilo написал:
=ЕСЛИ(СЕГОДНЯ()-7>--ПСТР(P2;НАЙТИ(СИМВОЛ(1);ПОДСТАВИТЬ(P2;"[";СИМВОЛ(1);ДЛСТР(P2)-ДЛСТР(ПОДСТАВИТЬ(P2;"[";""))))+5;10);"Комментарий не обновлён";"Всё ОК")
Спасибо за помощь!
Отобразить последнюю дату ячейки с текстом
 
Добрый день!    Помогите пожалуйста! Проблема следующая. Незнаю как написать формулу для столбца Комментарий не обновлявшего более 7 дней с последний даты ввода комментария

Например:
[ вс 08.09.2019 22:16:21 ПП - Иван Иванов - 0-Приостановлен ]: Отложено на 20.09.2019
[ вт 08.10.2019 7:53:32 ДП - Иван Иванов  - 0-Приостановлен ]:
Отложено на 25.10.2019

Необходим последний комментарий
[ вт 08.10.2019 7:53:32 ДП - Иван Иванов  - 0-Приостановлен ]:
Отложено на 25.10.2019
Изменено: katty_23 - 25.11.2019 14:05:57
Страницы: 1
Наверх