Excel даты для однозначных цифр менее 12 в месяц и дата создает расхождение - PullRequest
0 голосов
/ 02 мая 2020

У меня есть две ячейки в Excel, в которых есть поле даты, и я написал код VBA для удаления записей, основанных на датах.

Есть странный сценарий, с которым я столкнулся сегодня.

Сценарий 1: (рабочий сценарий)

Когда в столбцах указана дата в формате 30/04/2020 10:00:00 (dd/mm/yyyy), приведенный ниже код работает нормально.

Сценарий 2 :( создано несоответствие)

Поскольку в столбце данных 01/05/2020 10:00:00 (формат dd/mm/yyyy), мой код обрабатывает его как 01JAN2020 в VBA. вместо этого.

Пример кода приведен ниже:

a=worksheets("Sheet1").cells(row,col).value ' captures value in the required column
b=format (date-1,"DD-MM-YYYY") ' Captures yesterdays date for comparison purpose
c=format(a,"DD-MM-YYYY") 'This is to convert the required column format to the format that we are comparing the value with

if (b <> c) then
 msgbox("This is an invalid record")
else
msgbox("Valid")
end if

Приведенный выше код работает, когда в столбце указана дата 30/04/2020 10:00:00, которая рассматривается как 30-APR, Но тот же код, который имеет запись 01/05/2020 10:00:00, трактуется как 01-JAN, и сравнение идет не так.

Может ли кто-нибудь помочь мне с этим разобраться? Существует простое форматирование, которое, как мне кажется, мне не хватает, и я не могу его отладить.

Ваша помощь в этом очень ценится.

Ответы [ 2 ]

3 голосов
/ 02 мая 2020

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

a = Worksheets("Sheet1").Cells(row, col).Value ' captures value in the required column
b = Date - 1


If (a <> b) Then
 MsgBox ("This is an invalid record")
Else
MsgBox ("Valid")
End If

должно работать.

Если даты НЕ являются действительными датами, то вы необходимо исправить эту проблему.

Проблема, которую вы описываете, обычно возникает из-за неправильного открытия текстового / CSV-файла с датами в формате, отличном от ваших Windows региональных настроек. «Исправить» - это импортировать данные, чтобы вы могли указать Excel правильный формат во время импорта.

0 голосов
/ 07 мая 2020

ОТВЕТ: Я пытался использовать комбинацию SPLIT и CDATE, и это действительно помогло мне.

a1=split(worksheets("Sheet1").cells(row,col).value,"/") ' captures value in the required column
a=cdate(a(1) & "/" & a(0) & "/" &a(2))
b=format (date-1,"DD-MM-YYYY") ' Captures yesterdays date for comparison purpose
c=format(a,"DD-MM-YYYY") 'This is to convert the required column format to the format that we are comparing the value with

if (b <> c) then
 msgbox("This is an invalid record")
else
msgbox("Valid")
end if

Надеюсь, это поможет кому-то в какой-то момент времени

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...