Страницы: Пред. 1 2
RSS
проверка ячейки на правильное отражение даты
 
evgeniygeo, это ворожение If   Cells(i, 17).Text = Format(Cells(i, 17),   "DD.MM.YYYY"  )  работает очень, мягко говоря, как и поиск (??.??.????). Пустые, 3 цифры вместо года, 51 число, все считает датой. Пустые тоже считает датой. Буквы тоже считает датой.
Изменено: Сергей020487 - 29.09.2022 09:03:54
 
Ігор Гончаренко, Мне нужно сообщить в какой ячейке (из указанных выше трех столбцов) содержимое отличается от формата дд.мм.гггг.
Ячейка не пустая, не содержит и не может состоять из букв, чисел не может быть больше 31, месяцев больше 12, годы должны быть в деапозоне 2015-2023.
Формат ячейки в данном случае мне не вашен, будет ли он общим или краткой датой.
Изменено: Сергей020487 - 29.09.2022 09:04:38
 
Сергей020487,
так в чем проблема добавить дополнительные условия
Код
Sub aa()
For i = 1 To 10
If Cells(i, 1) <> "" And Cells(i, 1).Text = Format(Cells(i, 1), "DD.MM.YYYY") And IsDate(Cells(i, 1)) Then
MsgBox "A" & i & " - дата"
Else: MsgBox "A" & i & " - НЕ дата"
End If
Next i
End Sub

или даже лучше так:
Код
Sub aa()
For i = 1 To 10
If Cells(i, 1) <> "" And Cells(i, 1) Like "##.##.####" = True And IsDate(Cells(i, 1)) Then
MsgBox "A" & i & " - дата"
Else: MsgBox "A" & i & " - НЕ дата"
End If
Next i
End Sub
Изменено: evgeniygeo - 29.09.2022 09:45:01
 
Сергей020487,
знаете чем постановка задачи отличается от словесной пурги?
после постановки задачи человек понимает может он решить эту задачу или нет
человек попавший в словесную пургу совершенно дезориентирован он не то, что не понимает как решать, он не понимает что решать! он задачу не видит из-за пурги
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко, Я просто не знаю как Вам поставить задачу. Не понимаю, что мне еще нужно сказать.
 
Сергей020487,
коды из #33 работают так как Вам нужно?
 
Цитата
Сергей020487 написал:
Ячейка не пустая, не содержит и не может состоять из букв, чисел не может быть больше 31, месяцев больше 12, годы должны быть в деапозоне 2015-2023.

и все мы понимаем что если в ячейке стоит просто 1 в общем формате, то это 01.01.1900  в формате даты. Считать ли это корректным для проверки???
По вопросам из тем форума, личку не читаю.
 
Цитата
Сергей020487 написал:
Ячейка не пустая, не содержит и не может состоять из букв, чисел не может быть больше 31, месяцев больше 12, годы должны быть в деапозоне 2015-2023
Может все проще?
Создаете в модуле доп.функцию:
Код
Function IsRightDate(val) as boolean
    Dim dt As Date
    On Error Resume Next
    dt = CDate(val)
    If dt >= #1/1/2015# and dt <=#1/1/2024# then
        IsRightDate = True
    end if
End Function

а в коде ей проверяете:
Код
If IsRightDate(Cells(i, 1).value) Then
MsgBox "A" & i & " - дата"
Else: MsgBox "A" & i & " - НЕ дата"
End If
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
БМВ,
судя по сообщению №26, нужно считать некорректным.
Получается, что верно только ДД.ММ.ГГГГ
Цитата
Сергей020487 написал:
не формат ячейки, а формат содержимого ячейки дд.мм.гггг - верно; а д.мм.гггг не верно, или дд.мм.гг - неверно и тд
Изменено: evgeniygeo - 29.09.2022 14:17:13
 
Типы значений ячеек: пустая, текст, число, логическое значение, ошибочное значение.
Сформулируйте, что Вы считаете "правильной" датой:
1. Если ячейка содержит текст, то ...
2. Если ячейка содержит число, то ...
Владимир
 
40 сообщений в теме - может, пора сформулировать задачу
Изменено: Ігор Гончаренко - 29.09.2022 15:26:10
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Господа, вам не кажется, что вы пытаетесь решить проблему, которая существует исключительно в воображении ТС?
И, с учетом, что ему наплевать на форматы, а 10.30.2022 вполне корректная дата, все изыски ведут в тупик.
 
evgeniygeo, Да второй код отлично отрабатывает. Пока косяка не нашел. Вот этот:
Sub aa()For i = 1 To 10
If Cells(i, 1) <> "" And Cells(i, 1) Like "##.##.####" = True And IsDate(Cells(i, 1)) Then
MsgBox "A" & i & " - дата"
Else: MsgBox "A" & i & " - НЕ дата"
End If
Next i
End Sub
А можем еще влепить условие по году, от 2016 до 2023, чтоб исключить человеческий фактор и как следствие неправильный ввод года.
А потом совместить с кодом из моего файла (Разбить_комментарий_по_ячейкам()), и в отношении трех столбцов Q, AI, AK.
 
БМВ, Это будет ошибкой. Мне тут важно не то значение фактическое которое стоит в ячейке, а именно визуальный его вид. Второй макрос в данном файле собирает все ячейки в один текстовый коментарий, и как выглядела дата в ячейках Q, AI, AK так она и отразится в Коментарии. Поэтому мне похрен какой формат у ячейки.
 
sokol92, Ігор Гончаренко, RAN, посмотрите пожалуйста файл в моем 43 сообщении. Как видно из него первый макрос раскладывает коментарий на ячейки. В этот момент вся таблица в Общем значении. После разложения комментария, я исправляю ошибки. В том числе и даты в столбцах Q, AI, AK.
Макрос формат ячейки не меняет. для меня важно, чтоб в этой ячейке отображалось только дд.мм.гггг.
Я искренне извиняюсь, что не могу дать четкое ТЗ.
 
Цитата
Сергей020487 написал:
А можем еще влепить условие по году, от 2016 до 2023, чтоб исключить человеческий фактор и как следствие неправильный ввод года.
вообще Дмитрий(The_Prist) Щербаков в сообщении #38 уже предложил вариант с проверкой периода, но в данном коде, например 01.02.20 также будет считаться датой, но можно добавить дополнительное условие.
Цитата
Сергей020487 написал:
А потом совместить с кодом из моего файла (Разбить_комментарий_по_ячейкам()), и в отношении трех столбцов Q, AI, AK.
а в чем у Вас сложность?
Изменено: evgeniygeo - 30.09.2022 09:11:32
 
в Q5 написано 1.052.2022
ЧТО ЭТО???

в Q6 1.13.2019
это чуть лучше, но это за гранью (моего понимания)
то, что вы делаете с датами похоже на одну грустную историю:
отрежу ребенку ножки, чтобы он находился дома и не ходил на улицу - там его могут обидеть плохие мальчики
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
evgeniygeo, Я не могу добавить еще два диапазона, мозга не хватает.  
 
Цитата
написал:
в Q5 написано 1.052.2022
ЧТО ЭТО???

в Q6 1.13.2019
это чуть лучше, но это за гранью (моего понимания)
то, что вы делаете с датами похоже на одну грустную историю:
отрежу ребенку ножки, чтобы он находился дома и не ходил на улицу - там его могут обидеть плохие мальчики
Да это я специально вставил битые даты, чтоб проверить как работает условие....
 
Судя по хрени в файле из #43, единственный вариант - UDF отсюда
 
Цитата
Сергей020487 написал:
Я не могу добавить еще два диапазона, мозга не хватает.  
понимаю, но данная ветка форума не предполагает, что все сделают за Вас:
ПРАВИЛА ФОРУМА
Цитата
2.7. Если вам нужен не совет по самостоятельному решению задачи, а чтобы все сделали за вас - добро пожаловать в ветку Работа. Там, скорее всего, найдутся специалисты, которые разберутся с вашей проблемой быстро, качественно и за разумную плату.
Страницы: Пред. 1 2
Читают тему (гостей: 1)
Наверх