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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Excel - выборочное копирование строк, на др. лист книги по хитрому алгоритму 
:(
    Опции темы
slava
Дата 15.8.2005, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Привет всем!
надо из таблицы выделенные цветом строки отсортировать, т.е. надо создать новую таблицу содержавшую только ети строки. Отталкиваться надо от "Pfeil" (моё мнение).
Есть ли какие у вас предложения ?
буду очень благодарен.
Код


[b]Pfeil   TEILE-NR        Z /Benennung                    Einsatz Serie   Entfall Serie[/b]
1Y     03H100011D       Z  MOTOR                         13.12.2004    04.07.2005
1Y     03H100011E       Z  MOTOR                         13.12.2004    04.07.2005
1Y     03H100011D       Z  MOTOR                         04.07.2005    
1      03H100897        A  KETTENRADTRIEB                13.12.2004    
1      WSK009847F          REP.-ZYL.KURBELGEH            13.12.2004    
1      WSK009847           REP.-ZYL.KURBELGEH        
1      WSK014159D          MOTOR-KENNZEICHNG.            13.12.2004    
1      AMV176210           SILIKONKAUTSCHUK,             13.12.2004    
1      03H100769        A  OELKUEHLER+OELFILT            13.12.2004    
1      03H100991           ANZIEHDREHMOMENTE             13.12.2004    
2Y     03H100033        Z  RUMPFMOTOR                    13.12.2004    04.07.2005
2Y     03H100033E       Z  RUMPFMOTOR                    13.12.2004    04.07.2005
2Y     03H100033        Z  RUMPFMOTOR                    04.07.2005    
3Y     03H103011G       Z  ZYL.KURBELGEHAEUSE            13.12.2004    22.11.2004
3Y     03H103011L       Z  ZYL.KURBELGEHAEUSE            22.11.2004    
3      03H103021J          ZYL.KURBELGEHAEUSE            13.12.2004    22.11.2004
3      N  91017001         ZYLINDERSTIFT                 13.12.2004    
3      22103157         Z  DUESE                         13.12.2004    
3      WSK014076AD         GRUPPIERUNGSVORSCH            13.12.2004    
3      N  90502601         SPANNSTIFT                    13.12.2004    
2      071105561A          HAUPTLAGER                    13.12.2004    
2      071105591C          HAUPTLAGER                    13.12.2004    
2      TAB006157A          KURBELWELLE                   13.12.2004    
3Y     03H105021A       Z  KURBELWELLE                   13.12.2004    
3      03H105101           KURBELWELLE                   13.12.2004    
3      071105189D          GEBERRAD                      13.12.2004    
3      21105229            SENKSCHRAUBE                  13.12.2004    
3      AMV154100           BEFESTIGUNGSMITTEL            13.12.2004    
2      22105635            ANLAUFSCHEIBE                 13.12.2004    
3Y     03H105399        S  PLEUELSTG.M.KOLBEN            13.12.2004    
4Y     022105401B       Z  PLEUELSTANGE                  13.12.2004    
4      022105411B          PLEUELSTANGE                  13.12.2004    
4      022105421B          PLEUELDECKEL                  13.12.2004    
4      021105431C          PLEUELBUCHSE                  13.12.2004    
4      021105425B          PLEUELSCHRAUBE                13.12.2004    
3      WSK014076AE         GRUPPIERUNGSVORSCH            13.12.2004    
3      03H105701B          PLEUELLAGER                   13.12.2004    
4Y     03H107065        Z  KOLBEN MIT RINGE              13.12.2004    13.12.2004
4Y     03H107065B       Z  KOLBEN MIT RINGE              13.12.2004    31.01.2005
4Y     03H107065C       Z  KOLBEN MIT RINGE              31.01.2005    01.03.2005
4Y     03H107065F       Z  KOLBEN MIT RINGE              01.03.2005    
4      03H107103           KOLBEN                        13.12.2004    31.01.2005


Это сообщение отредактировал(а) slava - 17.8.2005, 09:35
PM MAIL   Вверх
Akina
Дата 15.8.2005, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



1) Программа должна знать по какому принципу ты "выделил цветом".
2) "Создать новую таблицу содержавшую только ети строки" - это совсем даже не "отсортировать", а сделать отбор в новую таблицу. Причем по неизвестному критерию (см. п. 1).
3) Для того чтобы таблица не съезжала, надо ее обрамлять тегом. Скажем тегом "Код" без подсветки.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
slava
Дата 15.8.2005, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



1) да, она должна будет в будушем сама ето делать , сеичас я веделил в ручную но ето надо автоматезировать.
2) в том то и вся фишка, мне надо выбрать ети строки, примерныи алгоритм : ето когда меняется значание в "Pfeil" то почти всегда надо ету строку выносить. Если строки повторяются то надо смотреть по дате , деиствительно ето ешё или уже нет.
3) спасибо са совет, а то кучу времени убил


Это сообщение отредактировал(а) slava - 15.8.2005, 16:20
PM MAIL   Вверх
Akina
Дата 15.8.2005, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



Цитата(slava @ 15.8.2005, 17:06)
примерныи алгоритм : ето когда меняется значание в "Pfeil" то почти всегда надо ету строку выносить. Если строки повторяются то надо смотреть по дате , деиствительно ето ешё или уже нет.

так программа никогда не сможет - примерно, почти всегда... сперва пойми что тебе на самом деле надо, и сформулируй абсолютно строгий алгоритм, однозначно отвечающий на вопрос, отбирать данную запись или нет.

Цитата(slava @ 15.8.2005, 17:06)
когда меняется значание в "Pfeil"

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

PS. Свои сообщения можно редактировать. Так что чем извиняться, лучше исправь второй постинг и обрами тегом таблицу в первом постинге.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
slava
Дата 15.8.2005, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



БД нет , ето простая Exel Таблица.
По поводу сортировки / отбора :
1 критерии : когда меняется значение "Pfeil"
2 : если в "Pfeil" встречаются сразу несколько одинаковых записеи, то по дате.
(по дате -- надо смотреть ещё она в серии или уже нет ).
PM MAIL   Вверх
Akina
Дата 16.8.2005, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



"надо смотреть еще"... детский сад, право слово...

Цитата(Akina @ 15.8.2005, 17:12)
сформулируй абсолютно строгий алгоритм, однозначно отвечающий на вопрос, отбирать данную запись или нет.



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
kulibin
Дата 17.8.2005, 02:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 229
Регистрация: 9.5.2005
Где: Украина, Запорожь е

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



кто строки выделять будет? программа или юзверь?
если в excel-e то можно перебрать строки в цикле и определить цвет ячеек, или его несоответствие стандартному цвету ячеек. Сделать это не проблема, токо - повторю Akina - надо знать что делаеш. Непонятна логика процесса.
Можеш на мыло кинуть файл - сделаю. Токо описание задачи чёткое приложи.
PM MAIL WWW ICQ   Вверх
slava
Дата 17.8.2005, 10:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



я извеняюс за неточное определение, попробую ешё раз.
> Дана Таблица с многими компонентами, мне нужны только некоторые из них, остальные меня не интересуют.
Начинаем с начала : на первом месте стоит "Motor" - он мне нужен. но так как их там целых 3 штуки (а нужен мне только один) то смотрим по дате - деиствителен он ешё или уже вышел из серии. . (т.е. в нашем случае получается третии по списку).
Идём дальше : в столбике "Pfeil" поменялось значение (1Y -> 1), всегда когда меняется здесь значание (1Y -> 1 ; 1 -> 2; 1 -> 2Y; 2 -> 2Y; 2->3; 2 - > 3Y; 3 ->........) мы выбераем етот компонент , т.е. в "Kettenradtrib".
Дальше : так как значение "Pfeil" не меняется , то последуюшии 6 записей нас не интересуют. Доходим до "Rumpfmotor" значание поменялос (1 -> 2Y ) - значит нам етот компонент нужен, но так как их опять несколько то смотрим по дате и получаем 3-тий по списку
Потом: опять меняется значение "Pfeil" (2Y -> 3Y) выбераем ZYL.KURBELGEHAEUSE, опять смотрим по дате, получаем второй.
И так далее

Я надеюс немного поконкретнее описал задачу

Спасибо за ваше терпение


PM MAIL   Вверх
Akina
Дата 17.8.2005, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



Цитата(slava @ 17.8.2005, 11:06)
Я надеюс немного поконкретнее описал задачу

напрасно...

Попробуй описАть все-таки алгоритм приблизительно такими словами:

Из каждой группы с одинаковым значением колонки Pfeil следует выбрать только одну строку, у которой Benennung совпадает с значением этого поля в первой из строк группы, а поле Entfall Serie не заполнено

или так:

Из каждой группы с одинаковым значением колонки Pfeil следует выбрать последнюю строку из первой подгруппы с одинаковым значением колонки Benennung

или так:

Из каждой группы с одинаковым значением колонки Pfeil следует выбрать строку из первой подгруппы с одинаковым значением колонки Benennung, у которой поле Entfall Serie не заполнено

или еще как...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
slava
Дата 17.8.2005, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата

Из каждой группы с одинаковым значением колонки Pfeil следует выбрать только одну строку, у которой Benennung совпадает с значением этого поля в первой из строк группы, а поле Entfall Serie не заполнено


здесь надо только ешё учесть что при переходи с группы с одинаковым значением колонки Pfeil в следующую группу выберать надо сразу перво стоящую строку, у которой Benennung совпадает с значением этого поля в первой из строк группы, а поле Entfall Serie не заполнено

PM MAIL   Вверх
Akina
Дата 17.8.2005, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



slava
Не надо меня поправлять и дополнять.

Сам напиши полный алгоритм, не допускающий разночтений.

Модератор: будете и дальше продолжать в таком духе - отправлю тему в Центр помоши.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Akina
Дата 17.8.2005, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



В общем ни хрена я не понял, ну да ладно...

Код

Dim SheetFrom As String
Dim SheetTo As String

Sub PerformAction()
Dim i As Integer
Dim j As Integer
Dim P As String
Dim B As String
Dim Flag As Integer

SheetFrom = "Лист1"
SheetTo = "Лист2"

Sheets(SheetFrom).Activate
Cells(1, 1).Activate
i = 1
j = 1
Call DoCopy(i, j)
For i = 2 To ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row
    If Cells(i, 1) = P Then Flag = 4 Else Flag = 0
    If Cells(i, 4) = B Then Flag = Flag + 2
    If Trim(CStr(" " & Cells(i, 6))) = "" Then Flag = Flag + 1
    P = Cells(i, 1)
    B = Cells(i, 4)
    Select Case Flag
        Case 0
'            Call DoCopy(i, j)
        Case 1
            Call DoCopy(i, j)
        Case 2
            Call DoCopy(i, j)
        Case 3
            Call DoCopy(i, j)
        Case 4
'            Call DoCopy(i, j)
        Case 5
'            Call DoCopy(i, j)
        Case 6
'            Call DoCopy(i, j)
        Case 7
'            Call DoCopy(i, j)
    End Select
Next
Cells(1, 1).Activate
End Sub

Private Sub DoCopy(ByVal i As Integer, ByRef j As Integer)
    Rows(i).Select
    Selection.Copy
    Sheets(SheetTo).Select
    Cells(j, 1).Activate
    ActiveSheet.Paste
    Sheets(SheetFrom).Select
    j = j + 1
End Sub


Вот этот код закатываешь в модуль. Исправляешь строки, задающие имена листов, комментируя и раскомментируя строки Case-ов, добиваешься правильного поведения процедуры.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
slava
Дата 17.8.2005, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



спасибо буду пробовать
PM MAIL   Вверх
kulibin
Дата 17.8.2005, 20:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 229
Регистрация: 9.5.2005
Где: Украина, Запорожь е

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



Это, как я понял, у тебя таблица выгружена из бд какой-то
эта бд у тебя? если да - то лучше с ней и работать.
Во всём остальном - согласен с Akina - с кодом, и с тем, что нихрена не понятно как отбирать записи. Нормальный шаблон. Дерзай.
PM MAIL WWW ICQ   Вверх
Staruha
Дата 24.8.2005, 08:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1292
Регистрация: 1.2.2004
Где: Казань

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



Я бы создала копию таблицы и удалила строки без цвета.Код не сложный.


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

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

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

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



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


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

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


 




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


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

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