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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.09.2009, 07:55   #1
wildvad
Пользователь
 
Регистрация: 11.03.2009
Сообщений: 14
Печаль сравнение с заполненеим.

всем привет.
Могли бы помочь с проблемой.
У меня есть два экселевских дока, в REPORT.xls лежат данные и сформированный пивот. Во втором Recomendation.xls лежит табличка на половину заполнена.

Требуется в Recomendation.xls заполнить столбцы q1 q2 q3 q4, взяв данные из REPORT.xls. алгоритм следующий. сравниваем столбцы Recomendation.xls \Sheet1\P/N с REPORT.xls\Sheet1\Material и если есть совпадение то заполняем данные в соответствии данные из столбцов файлов q1 = 200901-200903 \ q2 200904-200906 \ q3 = 200907-200909 \ q4 = grant total
Вложения
Тип файла: rar Culculation.rar (207.4 Кб, 16 просмотров)

Последний раз редактировалось wildvad; 28.09.2009 в 08:28.
wildvad вне форума Ответить с цитированием
Старый 28.09.2009, 10:24   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Вставьте в указанную ячейку файла Recomendation.xls формулу:

Код:
  Ячейка: E2      Формула  (стиль A1):   =ЕСЛИ(ЕНД(ВПР($B2;[REPORT.xls]Sheet1!$A$5:$H$65;СТОЛБЕЦ()
-2;0));"";ВПР($B2;[REPORT.xls]Sheet1!$A$5:$H$65;СТОЛБЕЦ()-2;0))
                  Формула  (стиль R1C1): =ЕСЛИ(ЕНД(ВПР(RC2;[REPORT.xls]Sheet1!R5C1:R65C8;СТОЛБЕЦ()
-2;0));"";ВПР(RC2;[REPORT.xls]Sheet1!R5C1:R65C8;СТОЛБЕЦ()-2;0))
и растяните эту формулу на диапазон e2:h103
EducatedFool вне форума Ответить с цитированием
Старый 28.09.2009, 11:06   #3
wildvad
Пользователь
 
Регистрация: 11.03.2009
Сообщений: 14
По умолчанию

я дилетант в этом немного, просто у меня русский код не понимает ВБЭ ..
я может не правленьно, описал алгоритм, зарание прошу прощения...
грубо говоря у нас в файле Recomendation.xls в Sheet1 есть столбец "B" там есть парт номера, нужно брать парт номер смотреть в файле REPORT.xls так же Sheet1 и в столбце "А" искать совпадение по парту, если оно находится брать данные \200901-200903\200904-200906\200907-200909\Grand Total и переносить их в ячейки q1\q2\q3\q4 типа кварталы. и так далее шерстить все парты.

Последний раз редактировалось wildvad; 28.09.2009 в 11:12.
wildvad вне форума Ответить с цитированием
Старый 28.09.2009, 11:19   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Вроде по-русски написал:
Цитата:
Вставьте в указанную ячейку файла Recomendation.xls формулу
Причём тут "ВБЭ"?
EducatedFool вне форума Ответить с цитированием
Старый 28.09.2009, 11:40   #5
wildvad
Пользователь
 
Регистрация: 11.03.2009
Сообщений: 14
По умолчанию

я просто предпологаю, всё это как макрос делается. Создал кнопку, к ни му перекрутил скрипт. Нажал кнопку он всё просмотрел сделал результат и урааа.
wildvad вне форума Ответить с цитированием
Старый 28.09.2009, 11:46   #6
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
я просто предпологаю, всё это как макрос делается
А я предполагаю, что в данном случае намного проще и удобнее использовать формулы.
И никаких кнопок нажимать не надо - всё считается автоматически...

Впрочем, можете подождать - вдруг кто напишет макрос...
EducatedFool вне форума Ответить с цитированием
Старый 28.09.2009, 11:51   #7
wildvad
Пользователь
 
Регистрация: 11.03.2009
Сообщений: 14
По умолчанию

да вот именно, люди хотят кнопку млин . Будем ждать макроса. =(

просто в прошлый раз вы мне помогли с похожим занятием думал вот подсобите опять.

Последний раз редактировалось wildvad; 28.09.2009 в 12:23.
wildvad вне форума Ответить с цитированием
Старый 29.09.2009, 13:16   #8
wildvad
Пользователь
 
Регистрация: 11.03.2009
Сообщений: 14
По умолчанию

кто сможет помочь с этим
wildvad вне форума Ответить с цитированием
Старый 01.10.2009, 22:04   #9
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Вот 2 варианта макроса:

Код:
Sub ClearRange()
    Range([b2], Range("b" & Rows.Count).End(xlUp)).Offset(, 3).Resize(, 4).ClearContents
End Sub

Sub Calc1()
    On Error Resume Next: Dim ra As Range, pt As Range
    Set pt = Workbooks("report.xls").Worksheets(1).PivotTables(1).PivotFields("Material").DataRange
    If Err Then MsgBox "Не открыт файл report.xls, или в нём на 1-м листе отсутствует сводная таблица", vbCritical: Exit Sub

    Dim cell As Range: Application.ScreenUpdating = False
    Set ra = Range([b2], Range("b" & Rows.Count).End(xlUp))
    For Each cell In ra.Cells
        cell.Offset(, 3).Resize(, 4).Value = pt.Find(cell).Offset(, 2).Resize(, 4).Value
    Next cell
    Application.ScreenUpdating = True
End Sub

Sub Calc2()
    On Error Resume Next: Dim ra As Range, pt As Range
    Set pt = Workbooks("report.xls").Worksheets(1).PivotTables(1).PivotFields("Material").DataRange
    If Err Then MsgBox "Не открыт файл report.xls, или в нём на 1-м листе отсутствует сводная таблица", vbCritical: Exit Sub
    A = pt.Resize(, 8).Address(, , xlR1C1, 1)

    f = "=IF(ISNA(VLOOKUP(RC2," & A & ",COLUMN()-2,0)),"""",VLOOKUP(RC2," & A & ",COLUMN()-2,0))"
    Set ra = Range([b2], Range("b" & Rows.Count).End(xlUp)).Offset(, 3).Resize(, 4)
    ra.FormulaR1C1 = f: ra.Value = ra.Value: ActiveWindow.DisplayZeros = False
End Sub
Оба макроса вполне работоспособны. Которым из них пользоваться - разницы нет.
Файл report.xls во время запуска макроса должен быть открыт.

Файл с макросом:

EducatedFool вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сравнение картинок Crucian Общие вопросы Delphi 8 01.11.2010 05:13
Сравнение звуков MakarovAlv Помощь студентам 1 26.06.2009 16:13
C#: Сравнение дат Veiron Общие вопросы .NET 1 08.06.2009 23:32
Сравнение данных Terikon Общие вопросы Delphi 21 14.04.2009 19:56
Сравнение строк Elm0 Паскаль, Turbo Pascal, PascalABC.NET 2 02.06.2008 09:31