Форум программистов, компьютерный форум, киберфорум
Наши страницы

VBA

Войти
Регистрация
Восстановить пароль
 
Sasanik
3 / 3 / 0
Регистрация: 12.12.2015
Сообщений: 158
#1

Как найти самую позднюю дату в массиве? - VBA

12.06.2017, 16:57. Просмотров 168. Ответов 2
Метки нет (Все метки)

Добрый вечер! Уважаемые форумчане, Помогите пожалуйста найти самую позднюю дату в массиве.
Этим кодом получаю массив с датами: -
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Sub Max_Date()
Dim bb(), NpRow As Long, Data_podtv As Date
   zakaz = "Тут"
   With Sheets(1)
       Podtv = .Range("A1:B10")
   End With
   ReDim bb(1 To UBound(Podtv))
        For PRow = 1 To UBound(Podtv)
    If CStr(zakaz) = Podtv(PRow, 2) Then
           NpRow = NpRow + 1
       bb(NpRow) = Podtv(PRow, 1)    'Дата
    End If
        Next PRow
 
'Определить самую позднюю дату в массиве
Data_podtv = Application.Max(bb(NpRow))
 
End Sub
Этой строкой
Visual Basic
1
Data_podtv = Application.Max(bb(NpRow))
, дату получаю, но это просто самая последняя дата в массие. Массив не сортирован, и потому последняя дата может быть не самой поздней.
Как найти в полученном массиве самую позднюю дату?
0
Вложения
Тип файла: xls Самая поздняя дата.xls (30.5 Кб, 2 просмотров)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.06.2017, 16:57
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как найти самую позднюю дату в массиве? (VBA):

Найти строку, содержащую самую позднюю осеннюю дату - VBA
Дан строковый файл, содержащий даты в формате: (12\12\2012). Найти строку, содержащую самую позднюю осеннюю дату. Если даты с требуемым...

В массиве P(n) найти самую длинную последовательность, которая является арифметической или геометрической прогрессией - VBA
Помогите пожалуйста с решением задачи В массиве P(n) найти самую длинную последовательность, которая является арифметической или...

Найти самую позднюю дату - C (СИ)
Дан файл, содержащий различные даты. Каждая дата — это число, месяц и год. Найти самую позднюю дату. Что не так в программе? Файл не...

Найти самую позднюю дату - Pascal
Дан файл F.Содержащий различные даты. Каждая дата- это число ,месяц и год . Найти самую позднюю дату

Найти самую позднюю / раннюю дату - Pascal
Дан файл с датами. Найти в файле самую позднюю дату (/а для другого варианта самую раннюю дату (отдельная задача))

Файлы записей. Найти самую позднюю дату - Turbo Pascal
составить программы с помощью которых: -сформировать файл из записей, содержащих различные даты -найти самую позднюю дату.

2
hamin
236 / 224 / 102
Регистрация: 21.11.2012
Сообщений: 752
12.06.2017, 17:50 #2
Sasanik,

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Sub max_date1()
    
    Dim rng As Range
    Dim data As Date
        
    Set rng = Range("A1:B10")
    data = rng.Cells(1, 1)
    
    For i = 2 To rng.Rows.Count
        If rng.Cells(i, 1) > data Then
            data = rng.Cells(i, 1)
        End If
    Next i
    
    MsgBox data
End Sub
0
Sasanik
3 / 3 / 0
Регистрация: 12.12.2015
Сообщений: 158
12.06.2017, 19:54  [ТС] #3
hamin, Спасибо! , но это не совсем то, что требуется. Диапазон не есть массив. Я отбираю в массив даты по условию из диапазона, а потому
Visual Basic
1
Cellss(1,1)
всегда будет плавать и сравнение с ней не корректно. Нужно именно среди дат в отобранном массиве найти самую позднюю.

Добавлено через 1 час 13 минут
Всем спасибо! Решение нашел. Преобразовав дату перед добавлением в массив в число.
Visual Basic
1
bb(NpRow) = CDbl(Podtv(PRow, 1))    'Дата
. Потом нахожу максимальное число и показываю его как дату. Вот полный код с изменениями: -
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Sub Max_Date()
Dim bb(), NpRow As Long, Data_podtv As Date
   zakaz = "Тут"
   With Sheets(1)
       Podtv = .Range("A1:B10")
   End With
   ReDim bb(1 To UBound(Podtv))
        For PRow = 1 To UBound(Podtv)
    If CStr(zakaz) = Podtv(PRow, 2) Then
           NpRow = NpRow + 1
      bb(NpRow) = CDbl(Podtv(PRow, 1))    'Дата
    End If
        Next PRow
 
'Определить самую позднюю дату в массиве
Data_podtv = Application.Max(bb)
MsgBox Data_podtv
End Sub
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.06.2017, 19:54
Привет! Вот еще темы с ответами:

Дан файл,содержащий различные даты.Найти самую позднюю дату. - Turbo Pascal
Дан файл,содержащий различные даты.Найти самую позднюю дату.

Файл записей содержит различные даты. Найти самую позднюю дату - Free Pascal
Нужны 2 программы: 2) Составить программы, с помошью которых: -сформировать файл из записей, содержащих различные даты; -найти...

Записи: Найти год с наименьшим номером, все весенние даты, самую позднюю дату - Turbo Pascal
Дан файл f, содержащий различные даты. Каждая дата это число месяц и год. Найти: 1) год с наименьшим номером 2) Все весенние даты 3)...

Дан файл f, содержащий различные даты. Каждая дата – это число, месяц и год. Найти самую позднюю дату - Delphi
Дан файл f, содержащий различные даты. каждая дата – это число, месяц и год. Найти самую позднюю дату. Нужна помощь программой!


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru