Формула Excel - Сравнение диапазона дат - PullRequest
0 голосов
/ 31 мая 2018

как написать EXCEL VBA, чтобы сделать мою дату с 04 / ИЮНЬ> 04 / ИЮНЬ 23:59.я не могу использовать '= date + 5/6', так как мне приходится запускать VBA много раз в день, и это добавит мои даты на завтра / послезавтра.Я просто хочу сделать дату до конца свидания.пожалуйста, помогите.

Пример будет выглядеть так:

CELL A1: 12 / июня CELL B1: 15 / июня CELL C1: 15 / июня 12:00 HRS CELL D1: = IF C1B2, «OUT OF RANGE »,« Okay! »)

, в этом случае D1 по-прежнему будет отображать OUT OF RANGE.

У меня есть масса таких изменений, поэтому я подумывал написать VBA для автоматическогоконвертируйте C1 из 15 / ИЮНЬ -> 15 / ИЮНЬ 23:59, чтобы D1 отображал Okay!

Я попробовал Cdate (Range (“D1”)) + 5/6 в vba, чтобы сделать его 23:00 часов, и я запускаю этот макрос несколько раз в день, и он будет добавлять 23 часа к датеи заставил его поменять на другую дату.

Ответы [ 2 ]

0 голосов
/ 01 июня 2018

Я попытался изменить его ниже, и это не помогло мне: (

 `
Dim x As Integer
Dim test1 As Date
Dim schdWS, compWS As Worksheet
Const H23M59 As Double = 1 - 60 / 86400

Set schdWS = Sheet1
Set compWS = Sheet11

lastrow = schdWS.Cells(Rows.Count, 8).End(xlUp).Row

For x = 20 To lastrow

    If IsDate(schdWS.Cells(x, 3).Value) Then
        Cells(x, 3).Value = CDate(Int(Cells(x, 3).Value + H23M59))
    End If



    'test1.NumberFormat = "dd/mm/yyyy"
    'schdWS.Cells(x, 3).FormulaR1C1 = test1 & " 23:59"

Next x

End Sub

    `
0 голосов
/ 31 мая 2018

О чем ты говоришь?

О:
- "Формула Excel" или
- "EXCEL VBA"
?

О:
- «Сравнение диапазона дат» или
- «чтобы сделать мою дату»
?

Предположим, что VBA - это ...

Тип Date в VBA - это Double, где:
- Целочисленная часть как количество дней от ... (смотритеF1) и
- дробная часть дня.

Итак, желаемое "04 / ИЮНЬ> 04 / ИЮНЬ 23:59" будет:

? DateSerial(2018, 06, 4) + ((23& * 60& * 60&) + (59& * 60&)) / 86400&
18-06-04 23:59:00 

Да, конечно, вы можете использовать TimeSerial вместо вышеуказанного, но ... это не дало вам правильного понимания дат VBA.
.

----------
ADD:

Извините, но этот код будет работать только для одной ячейки, потому что у меня много ячеек с датами и мне нужен VBAчтобы извлечь их и преобразовать в 23:59, например, я запускаю цикл for, чтобы изменить, как 20 ячеек подряд с несколькими диапазонами.И я буду запускать макрос несколько раз в день, будет ли он каждый раз добавлять 23 часа к этой дате и заставлять его менять даты?

Public Sub sp_Test_Date()
Dim rSel As Range
Dim i&

Const H23M59 As Double = 1 - 60 / 86400

    Set rSel = Selection
    With rSel
        For i = 1 To .Cells.Count
            With .Cells(i)
                If IsDate(.Value) Then
                    .Offset(0, 1).Value = CDate(Int(.Value) + H23M59)
                End If
            End With ' .Cells(i)
        Next
    End With ' rSel
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...