Модераторы: mihanik
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перемещение(удаление) столбцов, и формирование выходно ячейки 
V
    Опции темы
olga90
Дата 1.4.2007, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 30.1.2007

Репутация: нет
Всего: нет



Делаю модельку Лифта

Как мне сделать следующее:
У меня есть в экселе 2 строки:
Этаж назначения и
Номер человека в очереди (отсчет очереди начинается справа)
user posted image

И есть ячейка лифт (в него помещаются 4 человека)
Как мне сделать, чтобы в ячейку лифт как бы село 4 человека из очереди (отсчет очереди начинается справа) и после того как они туда (в ячейку лифт) сели (4 человека), то сдвинуть оставшихся в очереди в право и чтобы в ячейке Лифт отображать тех людей, которые сели в лифт (их номер и номер этажа назначения)
user posted image
PM MAIL   Вверх
mihanik
Дата 2.4.2007, 07:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 9
Всего: 109



Цитата(olga90 @  1.4.2007,  18:32 Найти цитируемый пост)
Как мне сделать, чтобы...


Написать программу.

1. Ты сначала продумай чёткий алгоритм этого действия.
    Дело в том, что лифт может "работать" по разным, иногда весьма зымысловатым правилам.
2. Проделай весь алгоритм вручную.
3. Начни писать алгоритм на VBA.
4. По ходу появления затруднений, обращайся сюда.

Только маленькая просьба.
Задавай чёткие вопросы, на которые можно давать такие же чёткие ответы.
Вопрос "Как сделать так, чтобы во всём Мире был мир?"
Тоже является чётким, но...
Слишком уж он всеобъемлющ. Чёткого ответа не получишь...






--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
olga90
Дата 2.4.2007, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 30.1.2007

Репутация: нет
Всего: нет



вот я поместила 4 человек из 7-ми в лифт

Далее я очищаю ячейки 4 ячеки справа (т.к. очередь на лифт у меня справа)
Код
For i = 8 To 5 Step -1   
   Cells(1, i).Clear
   Cells(2, i).Clear
Next i

получить 
user posted image

а теперь мне нужно переместить оставшихся в очереди людей вправо в самое начало очереди
user posted image

как это сделать ???

Это сообщение отредактировал(а) olga90 - 2.4.2007, 17:46
PM MAIL   Вверх
mihanik
Дата 3.4.2007, 07:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 9
Всего: 109



Ну... Как-то так...

Код

Dim N As Integer     ' Число посаженых в лифт человек
Dim I As Integer      ' Для цикла

N = 4                       ' Человек посадили в лифт

For I = 1 To 7 - N    ' В очереди максимум 7 человек, после посадки N человек
                               ' нужно передвинуть  (7 - N) человек ближе к лифту

   Cells(1, 9 - I).Value = Cells(1, 9 - I - N).Value
   Cells(1, 9 - I - N).Clear
   Cells(2, 9 - I).Value = Cells(2, 9 - I - N).Value
   Cells(2, 9 - I - N).Clear
Next I






--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
olga90
Дата 3.4.2007, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 30.1.2007

Репутация: нет
Всего: нет



mihanik - спасибо  smile 
Щас буду разбираться с выходной ячейкой, которая будет содержать значения номер и этажа

сделала пока так
Код

j=0
For I = 1 To 7 - N   ' посадка пассажиров в лифт
   If Len(Cells(1, 9 - I).Value) <> 0 Then
     mas_etag(j) = Cells(1, 9 - I).Value                      ' занесение этажа
     Cells(1, 9 - I).Value = Cells(1, 9 - I - N).Value
     Cells(1, 9 - I - N).Clear
   
     mas_nomer(j) = Cells(2, 9 - I).Value              ' занесение порядкового номера пассажира
     Cells(2, 9 - I).Value = Cells(2, 9 - I - N).Value
     Cells(2, 9 - I - N).Clear
     j = j + 1
   End If
Next I

For k = 0 To N - 1
   If (mas_etag(k) > 0) Then
        str_main = str_main + CStr(mas_nomer(k)) + "," + CStr(mas_etag(k)) + ";  "
   End If
 Next k
 
 str_main_2 = str_main
 Cells(5, 5).Value = str_main_2
 str_main = ""


получиться типа  2,4; 3,2; - второй в очереди, нужно на четвертый этаж и т.д.

Если возникнут вопросы, то я напиши. А вопросы обязательно появятся  smile  
PM MAIL   Вверх
mihanik
Дата 3.4.2007, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 9
Всего: 109



Цитата(olga90 @  3.4.2007,  12:59 Найти цитируемый пост)
Если возникнут вопросы, то я напиши.


Гы...  smile 

Это сообщение отредактировал(а) mihanik - 3.4.2007, 13:01


--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
olga90
Дата 4.4.2007, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 30.1.2007

Репутация: нет
Всего: нет



люди садятся только на первом этаже (очередь формируется только на первом этаже)

вот я поместила в ячейку лифта значения порядкового номера и номера этажа назначения 1,7;  2,6;  3,2;  4,6;
Это я сделала как я уже говорила в предыдущем посте

Теперь мне нужно:
1) определить максимальный этаж в этой ячейке (Лифт) и двигать лифт снизу до этого самого максимального этажа (в данном примере до 7-мого этажа)

2) двигая лифт вверх, нужно по ходу движения лифта высаживать пассажиров на соответствующих этажах и формировать список вышедших на каждом этаже (см. рисунки)
user posted image

user posted image

user posted image

user posted image

user posted image

как это сделать?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование, связанное с MS Office"
mihanik staruha

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами



  • Несанкционированная реклама на форуме запрещена
  • Пожалуйста, давайте своим темам осмысленный, информативный заголовок. Вопль "Помогите!" таковым не является.
  • Чем полнее и яснее Вы изложите проблему, тем быстрее мы её решим.
  • Оставляйте свои записи в "Книге отзывов о работе администрации"
  • А вот тут лежит FAQ нашего подраздела


Если Вам понравилась атмосфера форума, заходите к нам чаще!
С уважением mihanik и staruha.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование, связанное с MS Office | Следующая тема »


 




[ Время генерации скрипта: 0.0476 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.