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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.04.2012, 14:47   #1
vvvd
Пользователь
 
Регистрация: 24.03.2012
Сообщений: 12
По умолчанию Заполнение таблицы

Здравствуйте!
Есть таблицы 1 с заказами, которые ежедневно пополняются. Подскажите, пожалуйста, как перенести в таблицы 2 № заказа и кол-во в зависимости от цвета и открытого или закрытого сенатора. Кроме этого, нужно подсчитать общую длину горизонтов каждого цвета (например, ячейка S20) и общую длину стыков каждого цвета (например, ячейка S30). Подробности в прилагаемом файле.
Прошу Вашей помощи как грамотно это сделать.
Заранее благодарен.
Вложения
Тип файла: rar Заполнение таблицы.rar (30.7 Кб, 13 просмотров)
vvvd вне форума Ответить с цитированием
Старый 22.04.2012, 14:58   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Мазохизм...
Есть желающие?

Извините...
Заполняться должна обычная простая база данных, где есть колонки дата-вид-количество и т.д., а уж из неё можно получить что угодно как угодно. И когда угодно - зачем это делать постоянно в таком вот виде?
А делать из одного г... другое г... - это только за деньги
Ещё раз извините...
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 22.04.2012, 15:38   #3
vvvd
Пользователь
 
Регистрация: 24.03.2012
Сообщений: 12
По умолчанию

Таблица 1 это правая часть таблицы побольше, которую я не показал, т.к. там нет информации для заполнения таблицы 2. Поэтому между заказами есть пустые ячейки. К сожалению менять форму таблиц не желательно.
vvvd вне форума Ответить с цитированием
Старый 22.04.2012, 16:34   #4
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Так, для "затравки":
Код:
Sub tt()
    Dim a(), i&, ii&, dt

    a = Sheets(1).UsedRange.Value
    ReDim b(1 To UBound(a), 1 To 13)
    
    For i = 1 To UBound(a)
        If Trim(a(i, 2)) = "Нарезка на" Then dt = CDate(a(i, 3))
        If a(i, 2) = "Заказ" Then
            ii = ii + 1
            b(ii, 1) = dt
            b(ii, 2) = a(i, 3)    'nr
            b(ii, 3) = a(i, 4)    'prjamaja
            b(ii, 4) = a(i, 5)    '0
            b(ii, 5) = a(i + 1, 3)    'gotovnostj
            b(ii, 6) = a(i + 1, 4)    '0 gotovnosti
            b(ii, 7) = a(i + 2, 2)    'senator
            b(ii, 8) = a(i + 2, 4)    'serebro
            b(ii, 9) = a(i + 4, 2)    'vid
            b(ii, 10) = a(i + 4, 3)    'dlina
            b(ii, 11) = a(i + 4, 4)    'shirina
            b(ii, 12) = a(i + 4, 5)    'kolvo
            b(ii, 13) = a(i + 5, 3)    'kolvo stik
        End If

    Next
    Workbooks.Add(1).Sheets(1).[a1].Resize(ii, 13) = b
End Sub
Далее вместо выгрузки можете перебирать этот виртуальный массив b и формировать массивы для выгрузки. Примерно где-то аналогично тому, как получен массив b, но в обратном порядке.

Я думаю примерно так -
1. перебираем циклом массив b.
2. на каждой новой дате заполняем 8 массивов из 2-х строк (каждому нужна переменная-счётчик для новых данных по этому массиву).
3. если дата изменилась, то копируем диапазон-шаблон таблицы выгрузки (где-то держим его пустым, но с заголовками, форматами и формулами, хотя можно формировать всё и программно) и выгружаем в него эти 8 массивов.
Не вполне понял, что за цифры в столбце S, для чего ширину умножать на количество дверей не зависимо от длины, но думаю это тоже можно по ходу дела высчитывать из данных массива b - все исходные данные в нём есть.

Проблема привязать выгрузку второй таблицы к местоположению первой - но думаю это не нужно.
Хотя если любитель мазохизма - и это можно сделать...
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 22.04.2012 в 17:12.
Hugo121 вне форума Ответить с цитированием
Старый 24.04.2012, 21:06   #5
vvvd
Пользователь
 
Регистрация: 24.03.2012
Сообщений: 12
По умолчанию

Большое спасибо за алгоритм. Буду пробовать его реализовать самостоятельно, хотя шансы не большие (с VBA знаком очень поверхностно).
Я думаю, что массив b должен включать данные только за один день, т.к. таблица заполняется ежедневно. Может быть перед выполнением макроса просто выделить диапазон и его обрабатывать. Тогда и привязать выгрузку второй таблицы к местоположению первой будет легче.
для чего ширину умножать на количество дверей Чтобы знать общую длину горизонтов, из которых делаются двери.
ps. Считаю большим мазохизмом ежедневно заполнять эти таблицы вручную, зная что можно все автоматизировать.http://www.programmersforum.ru/images/smilies/smile.gif
vvvd вне форума Ответить с цитированием
Старый 24.04.2012, 21:37   #6
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Вообще-то можно сразу без промежуточного массива делать - но думаю проще сперва всё по порядку сложить в массив (содержимое полученного массива можно посмотреть в окне Locals, или его можно для отладки выгрузить куда-нибудь на лист), а потом из этого массива в другом порядке выгружать в таблицы.
Если сразу из одного бардака делать другой - боюсь будет концов не найти, если что-то изменится или потеряется.

Вообще зачем такие таблицы? Чтоб печатать наклейки?
Почему не заполнять нормальную базу, а уже из неё запросами/макросами выбирать что угодно как угодно когда угодно?
Но конечно это другая большая работа - разработать базу. Это уже работа для Вашего программиста. Или Вам на неделю
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 24.04.2012 в 21:41.
Hugo121 вне форума Ответить с цитированием
Старый 24.04.2012, 22:04   #7
vvvd
Пользователь
 
Регистрация: 24.03.2012
Сообщений: 12
По умолчанию

Вообще зачем такие таблицы? По таким таблицам делаются двери.
С таких таблиц информация воспринимается лучше, чем с базы, которую еще надо сделать.
vvvd вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
заполнение таблицы из бд Damhurz PHP 34 05.04.2013 14:38
Заполнение таблицы Lunozwetka БД в Delphi 2 16.06.2011 18:43
Заполнение таблицы данными Ташка Microsoft Office Excel 1 13.05.2011 11:23
Заполнение таблицы arkvid Microsoft Office Excel 10 17.11.2010 18:32
заполнение таблицы Andreyka Общие вопросы Delphi 6 07.02.2009 22:18