Страницы: 1
RSS
Отобразить последнюю дату ячейки с текстом
 
Здравствуйте!Ранее писала на форум написать формулу для столбца Комментарий не обновлявшего более 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
 
Без файла-примера, конечно, фиг разберёшься. Хорошо, что он в старой теме есть (которую тоже пришлось самому искать...).
Вероятнее всего - не заэкранировали кавычки.
""=IF(TODAY()-7>--MID(RC[-11],FIND(CHAR(1),SUBSTITUTE(RC[-11],""["",CHAR(1),LEN(RC[-11])-LEN(SUBSTITUTE(RC[-11],""["",""""))))+5,10),""Comment is not updated"",""Everything is OK"")""
Формулу брал для AA2 файла-примера из прошлой темы.
Как вариант, чтобы не мучиться с кавычками, хотя их там не много, можно попробовать конструкцию типа:
Код
selection.formular1c1=Replace(selection.formular1c1, "Комментарий не обновлён", "Comment is not updated")
Изменено: Wiss - 27.11.2019 09:43:11
Я не волшебник, я только учусь.
 
Рассматривается вариант только через формулу?

Оффтоп: "Мы добавили формулы в твой макросы, чтобы ты использовал формулы, используя макрос" (xzibit)
Изменено: Polkilo - 27.11.2019 10:03:41
 
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"")
 

Включаем макрорекодер, вводим формулу, получаем:

Код
ActiveCell.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 - 27.11.2019 12:06:04
 
для отчета в 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),""Комментарий не обновлён"",""Всё ОК"")"
 
katty_23, у Вас закрывающая скобочка не так стоит.
"=IF(TODAY()-7>--MID(RC [-1],FIND(CHAR(1),SUBSTITUTE(RC[-1],""["",CHAR(1),LEN(RC [-1) -LEN(SUBSTITUTE(RC[-1],""["","""")))) +5,10),""Комментарий не обновлён"",""Всё ОК"")"
Я не волшебник, я только учусь.
 
Цитата
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
 
надежный способ посчитать сколько скобок открыто, а сколько закрыто
даже если количество совпало - еще не факт что формула написана правильно, но если не совпало - точно работать не будет!
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Увидеть бы что именно Вы пишете... У меня в файле-примере есть нормальная рабочая формула. У Вас точно не хватает кавычек в начале. Формула для программы это текст, текст должен быть в кавычках.
objExcel.Cells(i, 19).FormulaR1C1 = "= Формула"
Изменено: Wiss - 28.11.2019 10:20:14
Я не волшебник, я только учусь.
 
Цитата
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
Страницы: 1
Наверх