Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: Выбрать нужное из листа и сохранить это в другом Добавлено: 16.06.09 09:53  

Автор вопроса:  Дмитрий
Помогите пожалуйста начинающему:
Нужно из первого листа выбрать равные строки (сравниваем поочередно со строками второго листа) и, если условие по соответствующим ячейкам выполняется, копирум строку из первого листа в третий. Пользуясь хелпом написал макрос но он отказывается работать, почему немогу понять... Помогите кто знает в чем проблема
Sub write_report()

    Sheets("Отчет").Select
    Range("A1").Select
    sotr_baza_n = 1 'проход по базе (Большой цикл)
    sotr_sp_n = 1 'проход по списку событий (Вложеный цикл)
    kol_sov = 0 'флаг совподения по сотрудникам
    sn_copy = 2
    z_baza = 0
    z_spisok = 0
    While z_baza = 0
        sotr_sp_n = 1
        'Excel.ThisWorkbook.
        While z_spisok = 0
         If (Sheets("База").Cells(sotr_baza_n, 3) <> Sheets("События").Cells(sotr_sp_n, 3)) And (Sheets("События").Cells(sotr_sp_n, 3) <> "") Then
          sotr_sp_n = sotr_sp_n + 1
         ElseIf (Sheets("База").Cells(sotr_baza_n, 3) = Sheets("События").Cells(sotr_sp_n, 3)) And (Sheets("События").Cells(sotr_sp_n, 3) <> "") Then
          kol_sov = 1
          If (Sheets("База").Cells(sotr_baza_n, 5) = "5-ти дневный график") And (Sheets("События").Cells(sotr_sp_n, 2) > Sheets("Отчет").Cells(1, 1)) Then
           Sheets("События").Select
           Rows(CStr(sotr_sp_n) + ":" + CStr(sotr_sp_n)).Select
           Selection.Copy
           Sheets("Отчет").Select
           Rows(CStr(sn_copy) + ":" + CStr(sn_copy)).Select
           ActiveSheet.Paste
           sn_copy = sn_copy + 1
          End If
          sotr_sp_n = sotr_sp_n + 1
         Else: z_spisok = 1
         End If
        Wend
     sotr_baza_n = sotr_baza_n + 1
     If Sheets("База").Cells(sotr_baza_n, 3) = "" Then
      z_baza = 1
     End If
    Wend
    
End Sub

Ответить

  Ответы Всего ответов: 5  

Номер ответа: 1
Автор ответа:
 AngryBadger



Вопросов: 33
Ответов: 245
 Профиль | | #1 Добавлено: 16.06.09 11:24
Опиши какое условие должно выполняться и что с чем ты сравниваешь (на первом и втором листе).

Ответить

Номер ответа: 2
Автор ответа:
 Дмитрий



Вопросов: 1
Ответов: 3
 Профиль | | #2 Добавлено: 16.06.09 11:39
Вот это условие у меня "неидёт"
...If (Sheets("База";).Cells(sotr_baza_n, 5) = "5-ти дневный график";) And (Sheets("События";).Cells(sotr_sp_n, 2) > Sheets("Отчет";).Cells(1, 1)) Then ...
Если во втором листе книги "База" у сотрудника в ячейке график работы стоит "5-ти дневный график" и в первом листе в ячейке время прохода время больше чемзаписано в певой ячейке третьего листа (например 8:00:00) то эту строчку из первого листа копируем в третий лист

Ответить

Номер ответа: 3
Автор ответа:
 AngryBadger



Вопросов: 33
Ответов: 245
 Профиль | | #3 Добавлено: 16.06.09 11:40
Вот макрос, который поочередно стравнивает первые 100 ячеек первого и второго листа, если находит совпадение - записывет совпавшее значение на 3 лист.

Option Explicit


Sub CopyToSheet()

Dim MyRange1 As Range
Dim MyRange2 As Range
Dim r1 As Integer, r2 As Integer, r3 As Integer

Sheets(1).Select: Set MyRange1 = Sheets(1).Range(Cells(1, 1), Cells(100, 1))
Sheets(2).Select: Set MyRange2 = Sheets(2).Range(Cells(1, 1), Cells(100, 1))

For r1 = 1 To MyRange1.Cells.Count
    For r2 = 1 To MyRange2.Cells.Count
        If MyRange1.Cells(r1, 1).Value = MyRange2.Cells(r2, 1).Value Then
        r3 = r3 + 1
        Sheets(3).Cells(r3, 1).Value = MyRange1.Cells(r1, 1).Value
        GoTo NextVal
        End If
    Next r2
NextVal:
Next r1

Sheets(3).Select

End Sub

Ответить

Номер ответа: 4
Автор ответа:
 Дмитрий



Вопросов: 1
Ответов: 3
 Профиль | | #4 Добавлено: 16.06.09 11:41
Вот это условие у меня "неидёт"
...If (Sheets("База".Cells(sotr_baza_n, 5) = "5-ти дневный график" And (Sheets("События".Cells(sotr_sp_n, 2) > Sheets("Отчет".Cells(1, 1)) Then ...
Если во втором листе книги "База" у сотрудника в ячейке график работы стоит "5-ти дневный график" и в первом листе в ячейке время прохода время больше чемзаписано в певой ячейке третьего листа (например 8:00:00) то эту строчку из первого листа копируем в третий лист

Ответить

Номер ответа: 5
Автор ответа:
 Дмитрий



Вопросов: 1
Ответов: 3
 Профиль | | #5 Добавлено: 16.06.09 11:44
Спасибо Михаил a.k.a.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам