Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/сопоставление данных по столбцам - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » сопоставление данных по столбцам (Формулы/Formulas)
сопоставление данных по столбцам
rayzer Дата: Вторник, 21.10.2014, 08:37 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Необходимо сопоставить значение столбца А со значением столбца D. В прикрепленном файле есть два листа "Исход" так сказать что имеем и "результат" то что должно получиться, выводить результат не обязательно на отдельный лист.
К сообщению приложен файл: 777.xls (18.0 Kb)
 
Ответить
СообщениеНеобходимо сопоставить значение столбца А со значением столбца D. В прикрепленном файле есть два листа "Исход" так сказать что имеем и "результат" то что должно получиться, выводить результат не обязательно на отдельный лист.

Автор - rayzer
Дата добавления - 21.10.2014 в 08:37
Richman Дата: Вторник, 21.10.2014, 09:51 | Сообщение № 2
Группа: Проверенные
Ранг: Обитатель
Сообщений: 346
Репутация: 54 ±
Замечаний: 0% ±

Excel 2007
Предварительно нужно добавить данные 2 квартала в третий, скопировав столбец А и вставив в столбцы D, в столбце Е сделайте пометку и затем надо выделить D:Е и удалить дубликаты. После получившиеся столбцы Д:Е скопировать на лист результат 2 в стлбцы Д:Е. Чтобы это не делать вручную вам макрос поможет.
К сообщению приложен файл: 777-1.xls (31.0 Kb)


С Уважением, Richman

 
Ответить
СообщениеПредварительно нужно добавить данные 2 квартала в третий, скопировав столбец А и вставив в столбцы D, в столбце Е сделайте пометку и затем надо выделить D:Е и удалить дубликаты. После получившиеся столбцы Д:Е скопировать на лист результат 2 в стлбцы Д:Е. Чтобы это не делать вручную вам макрос поможет.

Автор - Richman
Дата добавления - 21.10.2014 в 09:51
Richman Дата: Вторник, 21.10.2014, 09:55 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 346
Репутация: 54 ±
Замечаний: 0% ±

Excel 2007
Там еще условное форматирование в столбце В страницы результат2, которое нулевые значения записывает белым цветом.


С Уважением, Richman

 
Ответить
СообщениеТам еще условное форматирование в столбце В страницы результат2, которое нулевые значения записывает белым цветом.

Автор - Richman
Дата добавления - 21.10.2014 в 09:55
rayzer Дата: Вторник, 21.10.2014, 10:57 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
в том то и суть что нужен макрос!!!
[moder]А что ж вопрос в разделе формул??!![/moder]
 
Ответить
Сообщениев том то и суть что нужен макрос!!!
[moder]А что ж вопрос в разделе формул??!![/moder]

Автор - rayzer
Дата добавления - 21.10.2014 в 10:57
Pelena Дата: Вторник, 21.10.2014, 11:05 | Сообщение № 5
Группа: Админы
Ранг: Местный житель
Сообщений: 19195
Репутация: 4423 ±
Замечаний: ±

Excel 365 & Mac Excel
Перенесла тему


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеПеренесла тему

Автор - Pelena
Дата добавления - 21.10.2014 в 11:05
rayzer Дата: Вторник, 21.10.2014, 11:56 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Модератор: А что ж вопрос в разделе формул??!!

Пардон, был немного не внимателен при размещении данного запроса ))))
 
Ответить
Сообщение
Модератор: А что ж вопрос в разделе формул??!!

Пардон, был немного не внимателен при размещении данного запроса ))))

Автор - rayzer
Дата добавления - 21.10.2014 в 11:56
rayzer Дата: Среда, 22.10.2014, 15:07 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
тема еще актуальна!!!!! Грамотные люди, отзовитесь!!!
 
Ответить
Сообщениетема еще актуальна!!!!! Грамотные люди, отзовитесь!!!

Автор - rayzer
Дата добавления - 22.10.2014 в 15:07
RAN Дата: Среда, 22.10.2014, 19:07 | Сообщение № 8
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
На первый-второй рассчитайся! :D
Первый
[vba]
Код
Sub Мяу()
      Dim arr, lr&, i&, k&
      lr = Cells(Rows.Count, "A").End(xlUp).Row
      arr = Range(Cells(2, "D"), Cells(Rows.Count, "D").End(xlUp)).Resize(, 2).Value
      With CreateObject("Scripting.Dictionary")
          For i = 1 To UBound(arr)
              .Item(arr(i, 1)) = 1
          Next
          lr = Cells(Rows.Count, "A").End(xlUp).Row
          i = 2
          While i <= lr
              If Not .exists(Cells(i, "A").Value) Then
                  Cells(i, "D").Resize(, 2).Insert Shift:=xlDown
              Else
                  k = i
                  While Cells(k, "A") <> Cells(k, "D")
                      Cells(k, "A").Resize(, 2).Insert Shift:=xlDown
                      k = k + 1
                      lr = lr + 1
                  Wend
              End If
              i = i + 1
          Wend
      End With
End Sub
[/vba]
Второй
[vba]
Код
Sub Мяв()
      Dim arr, lr&, i&, k&
      lr = Cells(Rows.Count, "A").End(xlUp).Row
      arr = Range(Cells(2, "D"), Cells(Rows.Count, "D").End(xlUp)).Resize(, 2).Value
      With CreateObject("Scripting.Dictionary")
          For i = 1 To UBound(arr)
              .Item(arr(i, 1)) = 1
          Next
          For i = lr To 2 Step -1
              If Not .exists(Cells(i, "A").Value) Then
                  Cells(i, "A").Resize(, 2).Delete Shift:=xlUp
              End If
          Next
          lr = Cells(Rows.Count, "A").End(xlUp).Row
          For i = 2 To lr
              k = i
              While Cells(k, "A") <> Cells(k, "D")
                  Cells(k, "A").Resize(, 2).Insert Shift:=xlDown
                  k = k + 1
              Wend
          Next
      End With
End Sub
[/vba]
Кто нужнее?


Быть или не быть, вот в чем загвоздка!

Сообщение отредактировал RAN - Среда, 22.10.2014, 19:29
 
Ответить
СообщениеНа первый-второй рассчитайся! :D
Первый
[vba]
Код
Sub Мяу()
      Dim arr, lr&, i&, k&
      lr = Cells(Rows.Count, "A").End(xlUp).Row
      arr = Range(Cells(2, "D"), Cells(Rows.Count, "D").End(xlUp)).Resize(, 2).Value
      With CreateObject("Scripting.Dictionary")
          For i = 1 To UBound(arr)
              .Item(arr(i, 1)) = 1
          Next
          lr = Cells(Rows.Count, "A").End(xlUp).Row
          i = 2
          While i <= lr
              If Not .exists(Cells(i, "A").Value) Then
                  Cells(i, "D").Resize(, 2).Insert Shift:=xlDown
              Else
                  k = i
                  While Cells(k, "A") <> Cells(k, "D")
                      Cells(k, "A").Resize(, 2).Insert Shift:=xlDown
                      k = k + 1
                      lr = lr + 1
                  Wend
              End If
              i = i + 1
          Wend
      End With
End Sub
[/vba]
Второй
[vba]
Код
Sub Мяв()
      Dim arr, lr&, i&, k&
      lr = Cells(Rows.Count, "A").End(xlUp).Row
      arr = Range(Cells(2, "D"), Cells(Rows.Count, "D").End(xlUp)).Resize(, 2).Value
      With CreateObject("Scripting.Dictionary")
          For i = 1 To UBound(arr)
              .Item(arr(i, 1)) = 1
          Next
          For i = lr To 2 Step -1
              If Not .exists(Cells(i, "A").Value) Then
                  Cells(i, "A").Resize(, 2).Delete Shift:=xlUp
              End If
          Next
          lr = Cells(Rows.Count, "A").End(xlUp).Row
          For i = 2 To lr
              k = i
              While Cells(k, "A") <> Cells(k, "D")
                  Cells(k, "A").Resize(, 2).Insert Shift:=xlDown
                  k = k + 1
              Wend
          Next
      End With
End Sub
[/vba]
Кто нужнее?

Автор - RAN
Дата добавления - 22.10.2014 в 19:07
Формуляр Дата: Среда, 22.10.2014, 22:42 | Сообщение № 9
Группа: Друзья
Ранг: Ветеран
Сообщений: 832
Репутация: 255 ±
Замечаний: 0% ±

Excel 2003, 2013
rayzer,
загляните ещё сюда.


Excel 2003 EN, 2013 EN
 
Ответить
Сообщениеrayzer,
загляните ещё сюда.

Автор - Формуляр
Дата добавления - 22.10.2014 в 22:42
rayzer Дата: Четверг, 30.10.2014, 08:37 | Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Кто нужнее?


Второй вариант вообще не работает )) А первый рабочий, но с глюками какими то. Много пустых строк появляется
 
Ответить
Сообщение
Кто нужнее?


Второй вариант вообще не работает )) А первый рабочий, но с глюками какими то. Много пустых строк появляется

Автор - rayzer
Дата добавления - 30.10.2014 в 08:37
AndreTM Дата: Четверг, 30.10.2014, 13:12 | Сообщение № 11
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 500 ±
Замечаний: 0% ±

2003 & 2010
не работает
Покажите, где не работает
рабочий, но с глюками
аналогично.

"Москва словам не верит" (с)


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
Сообщение
не работает
Покажите, где не работает
рабочий, но с глюками
аналогично.

"Москва словам не верит" (с)

Автор - AndreTM
Дата добавления - 30.10.2014 в 13:12
rayzer Дата: Четверг, 06.11.2014, 07:16 | Сообщение № 12
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
й, но с глюками

прикрепил файл 888.xls это по первому варианту. Данных в файле было около 2000 строк, может из-за большого массива он так выполняется?
а второй вариант не могу прикрепить, потому что ставлю на выполнение макроса и в итоге он зависает!
К сообщению приложен файл: 888.xls (30.0 Kb)
 
Ответить
Сообщение
й, но с глюками

прикрепил файл 888.xls это по первому варианту. Данных в файле было около 2000 строк, может из-за большого массива он так выполняется?
а второй вариант не могу прикрепить, потому что ставлю на выполнение макроса и в итоге он зависает!

Автор - rayzer
Дата добавления - 06.11.2014 в 07:16
RAN Дата: Четверг, 06.11.2014, 11:15 | Сообщение № 13
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
В первом макросе 1 строчку поменять, 1 добавить для скорости
[vba]
Код
Sub Мяу()
     Dim arr, lr&, i&, k&
     lr = Cells(Rows.Count, "A").End(xlUp).Row
     arr = Range(Cells(2, "D"), Cells(Rows.Count, "D").End(xlUp)).Resize(, 2).Value
     With CreateObject("Scripting.Dictionary")
         For i = 1 To UBound(arr)

             .Item(arr(i, 1)) = 1
         Next
         Application.ScreenUpdating = False
         lr = Cells(Rows.Count, "A").End(xlUp).Row
         i = 2
         While i <= lr
             If Not .exists(Cells(i, "A").Value) Then
                 Cells(i, "D").Resize(, 2).Insert Shift:=xlDown
             Else
                 k = i
                 While Cells(k, "A") <> Cells(k, "D")
                     Cells(k, "A").Resize(, 2).Insert Shift:=xlDown
                     k = k + 1
                     lr = lr + 1
                 Wend
             End If
             i = IIf(i > k, i + 1, k + 1)
         Wend
     End With
End Sub
[/vba]
Второй макрос с такими данными работать и не должен, ибо расчитан на то, что 3 квартал - накопительный по отношению ко 2.


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеВ первом макросе 1 строчку поменять, 1 добавить для скорости
[vba]
Код
Sub Мяу()
     Dim arr, lr&, i&, k&
     lr = Cells(Rows.Count, "A").End(xlUp).Row
     arr = Range(Cells(2, "D"), Cells(Rows.Count, "D").End(xlUp)).Resize(, 2).Value
     With CreateObject("Scripting.Dictionary")
         For i = 1 To UBound(arr)

             .Item(arr(i, 1)) = 1
         Next
         Application.ScreenUpdating = False
         lr = Cells(Rows.Count, "A").End(xlUp).Row
         i = 2
         While i <= lr
             If Not .exists(Cells(i, "A").Value) Then
                 Cells(i, "D").Resize(, 2).Insert Shift:=xlDown
             Else
                 k = i
                 While Cells(k, "A") <> Cells(k, "D")
                     Cells(k, "A").Resize(, 2).Insert Shift:=xlDown
                     k = k + 1
                     lr = lr + 1
                 Wend
             End If
             i = IIf(i > k, i + 1, k + 1)
         Wend
     End With
End Sub
[/vba]
Второй макрос с такими данными работать и не должен, ибо расчитан на то, что 3 квартал - накопительный по отношению ко 2.

Автор - RAN
Дата добавления - 06.11.2014 в 11:15
rayzer Дата: Пятница, 07.11.2014, 08:04 | Сообщение № 14
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
В первом макросе 1 строчку поменять, 1 добавить для скорости

Спасибо большое! hands Все работает именно так как надо!!! yes Очень помогли в работе )))
 
Ответить
Сообщение
В первом макросе 1 строчку поменять, 1 добавить для скорости

Спасибо большое! hands Все работает именно так как надо!!! yes Очень помогли в работе )))

Автор - rayzer
Дата добавления - 07.11.2014 в 08:04
Мир MS Excel » Вопросы и решения » Вопросы по VBA » сопоставление данных по столбцам (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!