|
Создание таблицы из 5 других
|
|
|
|
Нновичок |
Воскресенье, 16 Января 2005, 7:33
|
Участник
Профиль
Группа: Участник
Сообщений: 13
Регистрация: 16.01.2005
Из: г.Измаил
Пользователь №: 7791
Конфигурация
Корпус: -- Материнская плата: -- Оперативная память: -- Видеокарта: -- Жесткий диск (винчестер): -- Дисковод: Нет дисковода CD/DVD: -- Модем: -- Сетевой адаптер: -- Звуковая плата: -- Монитор: -- Операционная система: -- Прочее: --
|
Помогите начинающему решить задачу: Таблица на листе 6 создается из таблиц листов 1, 2, 3, 4, 5, отсортированных по возрастанию кода в колонках А. На листе 1 код уникальный, листы 2, 3, 4, 5 состоят из колонок A-код B-наимен C-кол-во D-дата в формате дд.мм.гггг причем строки с кодом могут - совппадать с кодом листа 1, - отсутствовать, - повторяться, но отличаться датой В таблицу 6 построчно, пока А(n) листа 1 не пустое A=1!A B=1!B C=1!C D=1!D E=2!B F=2!C G=2!D H=3!B I=3!C и т.д. Если код совпадает - ячейки заполняются соответстветственно, отсутствует - соответствующие ячейки остаются пустыми, повторяются - заполняются со строки с максимальной датой. Подскажите, как создать макрос. Если знаете, где есть электронная версия учебника, самоучителя или справочника по VB - сообщите!!!
|
|
|
|
|
pashulka |
Понедельник, 17 Января 2005, 0:19
|
Участник
Профиль
Группа: Участник
Сообщений: 216
Регистрация: 13.07.2003
Пользователь №: 5551
Конфигурация
Корпус: -- Процессор: -- Материнская плата: -- Оперативная память: -- Видеокарта: -- Жесткий диск (винчестер): -- Дисковод: -- CD/DVD: -- Модем: -- Сетевой адаптер: -- Звуковая плата: -- Монитор: -- Операционная система: -- Прочее: --
|
Возможен ли вариант при котором один и тот же IDE может присутствовать, например в листе 2, 4 и отсутствовать в листе 3, 5 ???
|
|
|
|
|
Нновичок |
Понедельник, 17 Января 2005, 23:34
|
Участник
Профиль
Группа: Участник
Сообщений: 13
Регистрация: 16.01.2005
Из: г.Измаил
Пользователь №: 7791
Конфигурация
Корпус: -- Материнская плата: -- Оперативная память: -- Видеокарта: -- Жесткий диск (винчестер): -- Дисковод: Нет дисковода CD/DVD: -- Модем: -- Сетевой адаптер: -- Звуковая плата: -- Монитор: -- Операционная система: -- Прочее: --
|
Пример лист 1 А1 B1 C1 D1 E1 1 13 15 17 14 4 41 44 42 43 5 61 65 64 60 8 82 81 85 88 11 110 115 117 113
лист 2 A2 B2 C2 D2 2 пр 1 14.01.2003 4 ло 2 14.01.2004 4 пр 4 15.01.2004 8 нн 3 12.02.2004 13 рн 7 12.02.2004
лист 3 A3 B3 C3 D3 1 пп 2 15.02.2003 5 ва 4 11.03.2003 5 вв 3 22.12.2003 11 кк 5 10.02.2004
лист 4 A4 B4 C4 D4 1 аа 3 11.11.2003 1 ук 7 13.12.2003 8 ап 5 15.03.2003
лист 5 A5 B5 C5 D5 4 ку 6 11.11.2003 8 не 5 13.12.2003 11 ге 4 15.03.2003
лист 6 [A1 B1 C1 D1 B2 C2 D2 B3 C3 D3 B4 C4 D4 B5 C5 D5 ]1 13 15 17 пп 2 15.02.2003 ук 7 13.12.2003 4 41 44 42 пр 4 15.01.2004 ку 6 11.11.2003 5 61 65 64 вв 3 22.12.2003 8 82 81 85 нн 3 12.02.2004 ап 5 15.03.2003 не 5 13.12.2003 11 110 115 117 кк 5 10.02.2004 ге 4 15.03.2003
|
|
|
|
|
Нновичок |
Понедельник, 17 Января 2005, 23:39
|
Участник
Профиль
Группа: Участник
Сообщений: 13
Регистрация: 16.01.2005
Из: г.Измаил
Пользователь №: 7791
Конфигурация
Корпус: -- Материнская плата: -- Оперативная память: -- Видеокарта: -- Жесткий диск (винчестер): -- Дисковод: Нет дисковода CD/DVD: -- Модем: -- Сетевой адаптер: -- Звуковая плата: -- Монитор: -- Операционная система: -- Прочее: --
|
Пример лист 1 А1 B1 C1 D1 E1 1 13 15 17 14 4 41 44 42 43 5 61 65 64 60 8 82 81 85 88 11 110 115 117 113
лист 2 A2 B2 C2 D2 2 пр 1 14.01.2003 4 ло 2 14.01.2004 4 пр 4 15.01.2004 8 нн 3 12.02.2004 13 рн 7 12.02.2004
лист 3 A3 B3 C3 D3 1 пп 2 15.02.2003 5 ва 4 11.03.2003 5 вв 3 22.12.2003 11 кк 5 10.02.2004
лист 4 A4 B4 C4 D4 1 аа 3 11.11.2003 1 ук 7 13.12.2003 8 ап 5 15.03.2003
лист 5 A5 B5 C5 D5 4 ку 6 11.11.2003 8 не 5 13.12.2003 11 ге 4 15.03.2003
лист 6 A1 B1 C1 D1 B2 C2 D2 B3 C3 D3 B4 C4 D4 B5 C5 D5 1 13 15 17 пп 2 15.02.2003 ук 7 13.12.2003 4 41 44 42 пр 4 15.01.2004 ку 6 11.11.2003 5 61 65 64 вв 3 22.12.2003 8 82 81 85 нн 3 12.02.2004 ап 5 15.03.2003 не 5 13.12.2003 11 110 115 117 кк 5 10.02.2004 ге 4 15.03.2003
|
|
|
|
|
Нновичок |
Понедельник, 17 Января 2005, 23:47
|
Участник
Профиль
Группа: Участник
Сообщений: 13
Регистрация: 16.01.2005
Из: г.Измаил
Пользователь №: 7791
Конфигурация
Корпус: -- Материнская плата: -- Оперативная память: -- Видеокарта: -- Жесткий диск (винчестер): -- Дисковод: Нет дисковода CD/DVD: -- Модем: -- Сетевой адаптер: -- Звуковая плата: -- Монитор: -- Операционная система: -- Прочее: --
|
Извините за повтор и непонятки в листе 6
|
|
|
|
|
pashulka |
Вторник, 18 Января 2005, 6:13
|
Участник
Профиль
Группа: Участник
Сообщений: 216
Регистрация: 13.07.2003
Пользователь №: 5551
Конфигурация
Корпус: -- Процессор: -- Материнская плата: -- Оперативная память: -- Видеокарта: -- Жесткий диск (винчестер): -- Дисковод: -- CD/DVD: -- Модем: -- Сетевой адаптер: -- Звуковая плата: -- Монитор: -- Операционная система: -- Прочее: --
|
Что касается алгоритма переноса строк, то я лично, на примере листа 6, его не заметил (всё перепутано, а точнее сказать там, где по логике вещей должен быть пробел, его нет) Так что я вряд ли смогу Вам помочь, так как в телепатии пока замечен не был. ------------------ Если кому-то интересно решение этого вопроса с помощью стандартных средств, т.е. без применения VBA, то можете скачать пример : http://www.pashulka.nm.ru/FiveToOne.rarP.S. Необходимо учитывать, что автор вопроса не опубликовал точный образец решения своего вопроса, а значит трактовка решения у нас может различаться. Сообщение отредактировал pashulka - Среда, 19 Января 2005, 20:13
|
|
|
|
|
Барэль |
Вторник, 18 Января 2005, 11:06
|
Впередсмотрящий
Профиль
Группа: WinCity Team
Сообщений: 6383
Регистрация: 08.11.2001
Из: Санкт-Петербург, Россия
Пользователь №: 633
Конфигурация
Корпус: CM Centurion 534 + 850W Zalman Процессор: Другой Материнская плата: ASUS M4A79XTD EVO Оперативная память: Samsung - 2x2048 Mb DDR3 PC10600 Видеокарта: 1024 Mb Asus Radeon HD5770 Жесткий диск (винчестер): 250 Gb Seagate SATA (системный) + 2 Tb Seagate LP SATA + 2 Tb Seagate LP SATA Дисковод: 3.5" CD/DVD: Nec 4570 DVD+-RW Модем: -- Сетевой адаптер: OnBoard Звуковая плата: OnBoard Монитор: 22 Samsung SyncMaster P2250 Операционная система: Windows XP Прочее: Акустическая система Microlab Solo 1, UPS APC CS500, МФУ Canon MP800, Cooler CoolerMaster (CM) V8, Процессор AMD Phenom II 945
|
Нновичок, вы пришлите мне по мылу страницу эксела я его сюда выложу. Мыло barel(собак)pisem.net
--------------------
Вот. Винда проставилась. И даже уже BSOD выдала. Значит, работает! На всякий случай, воспользуйтесь поиском
|
|
|
|
|
Квазимодо |
Вторник, 18 Января 2005, 13:44
|
Участник
Профиль
Группа: Участник
Сообщений: 162
Регистрация: 25.11.2003
Пользователь №: 6223
Конфигурация
Корпус: -- Материнская плата: -- Оперативная память: -- Видеокарта: -- Жесткий диск (винчестер): -- Дисковод: Нет дисковода CD/DVD: -- Модем: -- Сетевой адаптер: -- Звуковая плата: -- Монитор: -- Операционная система: -- Прочее: --
|
С алгоритмом переноса, насколько я понял приведенный пример, дело обстоит так: - в листе 6 количество заполненных ячеек в каждой строке может различаться, поскольку если в каком-либо листе из 2-5 нет строк с кодом из текущей строки листа 1, этот лист надо пропустить (а если такие строки есть, то в строку сводного листа 6 переносятся 3 ячейки из строки с наибольшей датой); - если в листах 2-5 есть строки с кодами, которых нет в листе 1, то данные из этих строк в лист 6 не попадут (в примере это строка 5 листа 2 - значение A5=13, и этих данных в итоге нет). В таком случае, макрос будет примерно таким:
Sub FiveSheetsToOne() Set Ws = Worksheets("Лист1") Set TargetWs = Worksheets("Лист6") iLastRow = Ws.Cells(65536, 1).End(xlUp).Row For iRowLst1 = 1 To iLastRow
Set R = Ws.Range("A" & iRowLst1 & ":D" & iRowLst1) Set R1 = TargetWs.Range("A" & iRowLst1 & ":D" & iRowLst1)
R.Copy R1.PasteSpecial Paste:=xlPasteAll iClm = 5 'столбец, куда будут переноситься данные из текущего листа (со 2 по 5) в текущую строку листа 6 For iList = 2 To 5
Set WsDat = Worksheets("Лист" & Trim(Str(iList))) 'текущий лист с данными iLastRowD = WsDat.Cells(65536, 1).End(xlUp).Row iFoundRow = 0 For iRowDat = 1 To iLastRowD
If WsDat.Cells(iRowDat, "A").Value = Ws.Cells(iRowLst1, "A").Value Then
D = WsDat.Cells(iRowDat, "D").Value If iFoundRow = 0 Then
DMax = D iFoundRow = iRowDat
Else
If D >= DMax Then DMax = D iFoundRow = iRowDat End If
End If
End If
Next 'по строкам текущего листа с данными If iFoundRow > 0 Then 'если была найдена строка с требуемым кодом
Set R = WsDat.Range("B" & iFoundRow & ":D" & iFoundRow) Set R1 = TargetWs.Range(TargetWs.Cells(iRowLst1, iClm), TargetWs.Cells(iRowLst1, iClm + 2)) R.Copy R1.PasteSpecial Paste:=xlPasteAll iClm = iClm + 3
End If
Next 'конец перебора листов 2-5
Next 'конец перебора по строкам листа 1 End Sub
--------------------
Я долго учился на чужих ошибках, и теперь мои собственные ошибки не хуже, чем у других.
|
|
|
|
|
Нновичок |
Вторник, 25 Января 2005, 22:16
|
Участник
Профиль
Группа: Участник
Сообщений: 13
Регистрация: 16.01.2005
Из: г.Измаил
Пользователь №: 7791
Конфигурация
Корпус: -- Материнская плата: -- Оперативная память: -- Видеокарта: -- Жесткий диск (винчестер): -- Дисковод: Нет дисковода CD/DVD: -- Модем: -- Сетевой адаптер: -- Звуковая плата: -- Монитор: -- Операционная система: -- Прочее: --
|
Здравствуйте Барель и другие знатоки VBA Я выложил на мыло Бареля пример. На лист 6 решение макросом Квазимодо, на лист 7 - правильное. Нужно переход на просмотр следующего листа без записи, если значение А_лист1 < значения А_текущ_листа. Подправьте, пожалуйста макрос.
Если знаете, где есть электронная версия учебника, самоучителя или справочника по VBA - сообщите!!!
|
|
|
|
|
pashulka |
Среда, 26 Января 2005, 0:11
|
Участник
Профиль
Группа: Участник
Сообщений: 216
Регистрация: 13.07.2003
Пользователь №: 5551
Конфигурация
Корпус: -- Процессор: -- Материнская плата: -- Оперативная память: -- Видеокарта: -- Жесткий диск (винчестер): -- Дисковод: -- CD/DVD: -- Модем: -- Сетевой адаптер: -- Звуковая плата: -- Монитор: -- Операционная система: -- Прочее: --
|
To Нновичок
А возможный вариант решения через формулы Вы смотрели или нет ?
|
|
|
|
|
Нновичок |
Среда, 26 Января 2005, 22:55
|
Участник
Профиль
Группа: Участник
Сообщений: 13
Регистрация: 16.01.2005
Из: г.Измаил
Пользователь №: 7791
Конфигурация
Корпус: -- Материнская плата: -- Оперативная память: -- Видеокарта: -- Жесткий диск (винчестер): -- Дисковод: Нет дисковода CD/DVD: -- Модем: -- Сетевой адаптер: -- Звуковая плата: -- Монитор: -- Операционная система: -- Прочее: --
|
Уважаемый pashulka, у меня на ссылку http://www.pashulka.nm.ru/FiveToOne.rarответ "Сервер не найден" Если не затруднит, скиньте на мыло mazur_vlad@rambler.ru Других знатоков также прошу при необходимости отправлять сюда свои советы. Заранее благодарю!
|
|
|
|
|
Нновичок |
Воскресенье, 30 Января 2005, 11:15
|
Участник
Профиль
Группа: Участник
Сообщений: 13
Регистрация: 16.01.2005
Из: г.Измаил
Пользователь №: 7791
Конфигурация
Корпус: -- Материнская плата: -- Оперативная память: -- Видеокарта: -- Жесткий диск (винчестер): -- Дисковод: Нет дисковода CD/DVD: -- Модем: -- Сетевой адаптер: -- Звуковая плата: -- Монитор: -- Операционная система: -- Прочее: --
|
Уважаемый Квазимодо, извините за беспокойство Если Вас не затруднит, доработайте макрос, чтобы он работал правильно и быстро. Выборка и перенос данных по совпадению IDE у Вас работает правильно, остальное не очень, из-за того, что я не очень четко сформулировал задачу. На мой взгляд, 1) если IDE лист1 > IDE проверяемого листа, то читать следующую строку проверяемого листа; 2) если IDE лист1 < IDE проверяемого листа, то необходимо запомнить номер строки (чтобы при следующем просмотре этого листа начинать с него), ничего не переписывать и перейти на проверку следующего листа. Если сбросите на мыло <mazur_vlad@rambler.ru>, отправлю пример задачи Заранее благодарю за комментарии, я по ним изучаю VBA.
С уважением Нновичок
|
|
|
|
|
Нновичок |
Пятница, 04 Марта 2005, 22:12
|
Участник
Профиль
Группа: Участник
Сообщений: 13
Регистрация: 16.01.2005
Из: г.Измаил
Пользователь №: 7791
Конфигурация
Корпус: -- Материнская плата: -- Оперативная память: -- Видеокарта: -- Жесткий диск (винчестер): -- Дисковод: Нет дисковода CD/DVD: -- Модем: -- Сетевой адаптер: -- Звуковая плата: -- Монитор: -- Операционная система: -- Прочее: --
|
Огромное СПАСИБО pashulke, Квазимодо и другим за помощь!!! Благодаря Вам разобрался и начал писать на VBA и теперь уже не Нновичок а начинающий пользователь VBA. До свидания на нашем WINCITY Владимир Сообщение отредактировал Нновичок - Воскресенье, 07 Августа 2005, 10:57
|
|
|
|
|
|
1 чел. читают эту тему (1 Гостей и 0 Скрытых Пользователей)
|
0 Пользователей:
|
|
© Copyright by WinCity.Ru 2001 - 2008 | Обратная связьУслуги веб-хостинга предоставлены компанией MTW.RU
|
|