Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.11.2009, 15:10   #1
PARTOS
Пользователь
 
Регистрация: 24.10.2009
Сообщений: 87
По умолчанию Как разбить массив

Подскажите, как решить следующую задачу

Есть массив «ДАТА ВРЕМЯ» А1:А100
У каждой отдельная ДАТА может быть 2 разных значения времени или 00:00 или 12:00 (время начала 1 или 2 рабочей смены)
01.01.2000 00.00
01.01.2000 12.00
02.01.2000 00.00
02.01.2000 12.00
и т.д.

Как из этого одного массива «ДАТА ВРЕМЯ» сделать ТРИ параллельных массива:
В1:Вх – массив дат «ДАТА»
С1:Сх – массив только ПЕРВЫХ смен «ДАТА 00:00»
D1:Dх - массив только ВТОРЫХ смен «ДАТА 12:00»


ДАТЫ идут не в строгом порядке, есть разрывы (выходные дни, праздники, не было заказов - не работали и т.д.)

Смены идут тоже не в строгом порядке – и за сменой 12.00 ДАТЫ (х) может идти смена 12.00 ДАТЫ (у).

01.01.2000 00.00
01.01.2000 12.00
02.01.2000 12.00
03.01.2000 12.00
PARTOS вне форума Ответить с цитированием
Старый 19.11.2009, 15:44   #2
Юнлинг
Форумчанин
 
Регистрация: 17.10.2008
Сообщений: 239
По умолчанию

Так подойдет. См. вложение
Вложения
Тип файла: rar Книга7.rar (1.5 Кб, 12 просмотров)
Юнлинг вне форума Ответить с цитированием
Старый 19.11.2009, 15:51   #3
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Понажимайте на зелёные кнопочки:



Код:
Sub test()
    Dim cell As Range, ra As Range: Application.ScreenUpdating = False
    Set ra = Range([A1], Range("A" & Rows.Count).End(xlUp)): cl
    For Each cell In ra.Cells
        cell(1, 2) = Split(cell, " ")(0)
        Select Case Left(Split(cell, " ")(1), 2)
            Case "00": cell(1, 3) = cell
            Case "12": cell(1, 4) = cell
        End Select
    Next cell
End Sub
EducatedFool вне форума Ответить с цитированием
Старый 20.11.2009, 12:03   #4
PARTOS
Пользователь
 
Регистрация: 24.10.2009
Сообщений: 87
По умолчанию

Это немного не то, что я имел ввиду. Попробую объяснить по другому.

Мы из одномерного массива делаем ТАБЛИЦУ, где каждая строка соответствует только одной дате (в массиве А2:Ах одна дата может быть у двух строчек – случай когда в один день работала и ПЕРВАЯ (00:00) и ВТОРАЯ (12:00) смены), а каждый из трёх столбиков соответственно равны: «ДАТА», «00:00», «12:00»

В приложенном файле всё подробно расписано
Вложения
Тип файла: rar Массив-таблица.rar (22.6 Кб, 12 просмотров)
PARTOS вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как разбить сроку на переменные AxenicX Общие вопросы C/C++ 2 12.10.2009 22:50
Разбить на массив spein PHP 5 09.05.2009 20:11
Как разбить число на массив? recond Общие вопросы C/C++ 15 03.02.2009 00:36
Как инфу от idwhois разбить по строкам? jay-forum Работа с сетью в Delphi 4 12.01.2009 16:11
Как разбить число по числам? maxim_ov Microsoft Office Excel 3 04.08.2008 16:23