дд.мм.гггг чч: мм с шагом в полчаса в vba - PullRequest
0 голосов
/ 11 октября 2018

У меня есть начальная и конечная даты в этом пользовательском формате дд.мм.гггг чч: мм в ячейках Excel.Что мне нужно, это заполнить определенную строку с датами, увеличенными на полчаса от даты начала до даты окончания, используя код VBA.И я понятия не имею, как это сделать.

В Интернете есть несколько примеров с похожими проблемами, но только с месяцами или только часами, и это не формат даты.

Заранее спасибо за помощь.

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

Один из вариантов - найти интервал между начальной и конечной точкой.Помните, что даты Excel, которые на самом деле являются датами, а не строками, на самом деле являются целыми числами.Второе, что нужно помнить, это время - это десятичная часть, представляющая часть дня.Проверьте, является ли ваша дата (при условии, что она указана в A1) фактической датой или строкой с

=ISNUMBER(A1)

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

Разделите этот интервал на 30 минут или 30/60/24 и добавьте 1. Этоскажет вам, сколько итераций вам понадобится, которые вы можете поместить в цикл For

Start_Number = Range("A1")
End_number = Range(("A2")

Stamp = Start_Number
Interval_number = End_Number - Start_Number
Counter = integer of (Interval_number / (30/60/24))

For x = 1 to counter
   write Stamp to cell
   Stamp = Stamp + 30/60/24
Next x

В качестве альтернативы вы можете настроить цикл while.

Do While datetime < Stop_Point
    Write datetime to cell
    Datetime=datetime + 30/60/24
Loop

Обратите внимание, не фактический код, но дает представление, где OP не знал, с чего начать.

0 голосов
/ 11 октября 2018

Вы можете сделать это с помощью простой формулы.

  1. Введите дату начала в ячейку A1
  2. В A2 введите =A1+(1/48)
  3. Скопируйте формулу из A2вниз

готово.

Как это работает?
Даты в Excel представлены в виде количества дней с 1900.Это означает, что 1900-01-01 является первым днем ​​и представлен 1.Все остальные даты - только количество дней с тех пор.1 представляет один день.Таким образом, поскольку 1 день имеет 24 часа, 1/48 представляет полчаса.

Числовой формат dd.mm.yyyy hh:mm, как Excel показывает дату, не имеет значения, поскольку Excel сохраняет только значение (количество дней с 1900).) в значении ячейки.Таким образом, если вы введете сегодняшнюю дату в ячейку 2018-10-11, Excel фактически сохранит 43384 в значении ячейки (сегодня это 43384ᵗʰ день с 1900-01-01).

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