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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.10.2012, 11:34   #1
kostmos
 
Регистрация: 26.06.2012
Сообщений: 3
Вопрос Проблема с макросом

Добрый день, форумчане

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

Цель данного макроса: Сопоставить данные табеля, размещенного во вкладке Final с данными за аналогичный период электронного журнала во вкладке Month (необходимо чтобы в табеле выделялись цветом те даты, когда фактически по журналу входа не было посещения/отметок, т.е значение равно 0:00:00, а в табеле за указанную дату стоит значение больше 0. Любые другие значения больше 0:00:00, например 1:10:45, отмечаться не должны.) Кол-во сотрудников постоянно меняется.


Код:
Sub data_compare()

Dim x As String
Dim y As String

Dim arow As Integer
Dim wrow As Integer
Dim acol As Integer
Dim wcol As Integer

arow = 4
acol = 4
wrow = 4
wcol = 3


For arow = 4 To Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
    For acol = 3 To 18
        x = ActiveWorkbook.Worksheets("Month").Cells(arow, acol)
        y = ActiveWorkbook.Worksheets("Final").Cells(wrow, wcol)
        If x = "0" Then
            If y = "0" Then
                wcol = wcol + 1
            Else
                ActiveWorkbook.Worksheets("Final").Cells(wrow, wcol).Interior.Color = RGB(225, 15, 15)
                wcol = wcol + 1
            End If
        Else
            If y = "0" Then
                ActiveWorkbook.Worksheets("Final").Cells(wrow, wcol).Interior.Color = RGB(225, 15, 15)
                wcol = wcol + 1
            Else
                wcol = wcol + 1
            End If
        End If
    Next acol
wrow = wrow + 2
wcol = 3
Next arow
End Sub

Пример во вложении, буду признателен за помощь.

Заранее благодарю.
Вложения
Тип файла: zip Пример.zip (23.1 Кб, 14 просмотров)
kostmos вне форума Ответить с цитированием
Старый 20.10.2012, 00:24   #2
alex77755
Форумчанин
 
Аватар для alex77755
 
Регистрация: 14.02.2009
Сообщений: 753
По умолчанию

Не так всё просто.
Особенно с такими примерами.
Если бы была гарантия, что таблицы на листах соответствуют друг другу.
А так такой макрос выдаст чушь!!

Екатеринова Екатерина Александровна на Month в августе присутствует, а на финале уже её нет. Значит всё что ниже неё по списку будет заполнено не правильно. Поэтому нужно делать проверки по работникам и по месяцам. Либо более тщательно подготавливать данные
помогу решить контрольные VB6, VBA (недорого)
Alex77755@mail.ru
alex77755 вне форума Ответить с цитированием
Старый 20.10.2012, 00:39   #3
alex77755
Форумчанин
 
Аватар для alex77755
 
Регистрация: 14.02.2009
Сообщений: 753
По умолчанию

Код:
Sub сравнение()

Dim x As String
Dim y As String

Dim M(), Z(), R, C

M = Range(Лист1.Cells(3, 3), Лист1.Cells(Лист1.Cells(Rows.Count, 3).End(xlUp).Row, 18))
Z = Range(Лист2.Cells(3, 3), Лист2.Cells(Лист2.Cells(Rows.Count, 3).End(xlUp).Row, 18))
Range(Лист2.Cells(3, 3), Лист2.Cells(Лист2.Cells(Rows.Count, 3).End(xlUp).Row, 18)).Interior.ColorIndex = 0

For R = LBound(M) To UBound(M)
    For C = LBound(M, 2) To UBound(M, 2)
        x = M(R, C)
        y = Z(2 * R, C)
        If x = "0" Then
            If y <> "0" Then
                   Лист2.Cells(2 * R + 2, C + 2).Interior.Color = RGB(225, 15, 15)
            End If
        End If

Next C, R
End Sub
помогу решить контрольные VB6, VBA (недорого)
Alex77755@mail.ru
alex77755 вне форума Ответить с цитированием
Старый 20.10.2012, 22:18   #4
kostmos
 
Регистрация: 26.06.2012
Сообщений: 3
По умолчанию

Цитата:
Сообщение от alex77755 Посмотреть сообщение
Не так всё просто.
Особенно с такими примерами.
Если бы была гарантия, что таблицы на листах соответствуют друг другу.
А так такой макрос выдаст чушь!!

Екатеринова Екатерина Александровна на Month в августе присутствует, а на финале уже её нет. Значит всё что ниже неё по списку будет заполнено не правильно. Поэтому нужно делать проверки по работникам и по месяцам. Либо более тщательно подготавливать данные
Alex, спасибо за ответ. На самом деле это я допустил ошибку, фактически кол-во месяцев во вкладке "month" и "final" всегда будет равным, т.е общее кол-во одинаковое.

Файл пересохранил, еще раз извиняюсь.

Последний раз редактировалось kostmos; 20.10.2012 в 22:40. Причина: изменение файла
kostmos вне форума Ответить с цитированием
Старый 23.10.2012, 15:24   #5
kostmos
 
Регистрация: 26.06.2012
Сообщений: 3
По умолчанию

Alex, использовал указанный Вами способ, все работает, еще раз спасибо!
kostmos вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Маленькая проблема с макросом в excel 2010 Инженер-Джони Microsoft Office Excel 2 16.03.2012 15:56
Проблема с макросом Artem_85 Microsoft Office Excel 5 27.02.2012 11:59
Проблема с макросом Excel Excelik Помощь студентам 0 02.11.2011 11:55
Проблема с макросом в Excel ZHDN Microsoft Office Excel 12 05.08.2011 13:32
Проблема с макросом. kolob Microsoft Office Excel 3 22.12.2010 11:13