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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.06.2011, 00:27   #1
tt8989
Новичок
Джуниор
 
Регистрация: 16.06.2011
Сообщений: 1
По умолчанию Сопоставление и добавление данных по условию

Уважаемые знатоки экселя, помогите решить проблему:

есть два списка "план" и "факт", нужно к "плану" подтянуть факт (т.е. на листе "план" должен появиться столбец с "фактом";

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

сводная таблица не подходит, нужно именно добавить данные на лист "план"

основная проблема написать код, который будет автоматически добавлять недостающие строки

реализация нужна либо в 2003 либо в 2007 экселе

во вложение пример файла (короткий)

Заранее благодарен за любую помощь!
Вложения
Тип файла: zip post.zip (3.3 Кб, 21 просмотров)
tt8989 вне форума Ответить с цитированием
Старый 16.06.2011, 02:54   #2
R Dmitry
Форумчанин
 
Регистрация: 07.03.2010
Сообщений: 796
По умолчанию

Цитата:
Сообщение от tt8989 Посмотреть сообщение
Уважаемые знатоки экселя, помогите решить проблему:

есть два списка "план" и "факт", нужно к "плану" подтянуть факт (т.е. на листе "план" должен появиться столбец с "фактом";

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

сводная таблица не подходит, нужно именно добавить данные на лист "план"

основная проблема написать код, который будет автоматически добавлять недостающие строки

реализация нужна либо в 2003 либо в 2007 экселе

во вложение пример файла (короткий)

Заранее благодарен за любую помощь!
так подойдет ?
если не получиться переделать под Реальный файл, обращайтесь...
реквизиты в подписи
Вложения
Тип файла: zip PlanFact.zip (14.6 Кб, 27 просмотров)
Логика?!.... она где то рядом... E_mail: dg_rusak@mail.ru Если спасибо мало: Яндекс . Деньги - 41001731366021 WM R269866874234
R Dmitry вне форума Ответить с цитированием
Старый 16.06.2011, 03:02   #3
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

вставте этот
Код:
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim Lr As Long, R As Long, Sm As Single
  If Target.Column <> 3 Then Exit Sub
  Lr = Cells(Rows.Count, 1).End(xlUp).Row
  Sm = Application.Evaluate("SumProduct((A2:A" & Lr & "=A" & Target.Row & _
  ")*(B2:B" & Lr & "=B" & Target.Row & ")*C2:C" & Lr & ")")
  With Sheets("план")
    Lr = .Cells(Rows.Count, 1).End(xlUp).Row - 1
    ex = "max((план!A2:A" & Lr & "=A" & Target.Row & _
     ")*(план!B2:B" & Lr & "=B" & Target.Row & ")*row(план!A2:A" & Lr & "))"
    R = Application.Evaluate(ex)
    If R = 0 Then
      For R = 2 To Lr
        If .Cells(R, 1) > Cells(Target.Row, 1) Then Exit For
        If .Cells(R, 1) = Cells(Target.Row, 1) And _
           .Cells(R, 2) > Cells(Target.Row, 2) Then Exit For
      Next
      .Rows(R).Insert Shift:=xlDown
      .Cells(R, 1) = Cells(Target.Row, 1)
      .Cells(R, 2) = Cells(Target.Row, 2)
      If .Cells(R - 1, 1) = .Cells(R, 1) Then .Range(.Cells(R, 1), .Cells(R, 4)).Borders(xlEdgeTop).Weight = xlThin
      If .Cells(R + 1, 1) <> .Cells(R, 1) Then .Range(.Cells(R, 1), .Cells(R, 4)).Borders(xlEdgeBottom).Weight = xlMedium
    End If
    .Cells(R, 4) = Sm
  End With
End Sub
в модуль листа ФАКТ. имитируйте изменение значения в 3-й колонке листа факт (не обязательно изменять значение, достаточно поставить курсор в ячейку и нажать Enter) поменяли значение? изучайте лист план.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сопоставление данных в эксель по строкам Арсений Михайлович Microsoft Office Excel 1 09.07.2010 12:23
Сопоставление данных в двух таблицахъъъ Tanuki-sensei Microsoft Office Access 3 22.05.2009 09:25
Сопоставление данных в двух столбцах plasticman Microsoft Office Excel 4 12.03.2009 17:45
EXCEL поиск по базе и сопоставление данных lomax Microsoft Office Excel 4 10.02.2007 22:04