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

Вход

Регистрация

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

 

= Мир MS Excel/Вывод отдельного листа с несовпадениями - Мир MS Excel

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

Excel 2013
Здравствуйте, уважаемые форумчане!

Подскажите пожалуйста, как по несовпадающим значениям ячеек вывести лист с ошибками?

Пример вложен.
Заранее спасибо.
К сообщению приложен файл: 1-2-.xls (38.0 Kb)
 
Ответить
СообщениеЗдравствуйте, уважаемые форумчане!

Подскажите пожалуйста, как по несовпадающим значениям ячеек вывести лист с ошибками?

Пример вложен.
Заранее спасибо.

Автор - bob3
Дата добавления - 09.02.2015 в 22:32
alex77755 Дата: Понедельник, 09.02.2015, 22:51 | Сообщение № 2
Группа: Проверенные
Ранг: Обитатель
Сообщений: 362
Репутация: 64 ±
Замечаний: 0% ±

Подсчитать и сравнить. Не совпавшие вывести
Подсчитать мона так:
[vba]
Код
Sub Отработано()
      With Лист1
      m = .Range("A1").Resize(.Cells(.Rows.Count, 1).End(xlUp).Row, 6)
      End With
      With CreateObject("Scripting.Dictionary")
      For i = 1 To UBound(m)
          .Item(m(i, 1)) = .Item(m(i, 1)) + m(i, 6)
      Next i
      Лист1.Range("L1").Resize(.Count) = Application.Transpose(.keys)
      Лист1.Range("M1").Resize(.Count) = Application.Transpose(.items)
      End With
End Sub
[/vba]
К сообщению приложен файл: 0504049.jpg (14.5 Kb)


Могу помочь в VB6, VBA
Alex77755@mail.ru


Сообщение отредактировал alex77755 - Понедельник, 09.02.2015, 22:53
 
Ответить
СообщениеПодсчитать и сравнить. Не совпавшие вывести
Подсчитать мона так:
[vba]
Код
Sub Отработано()
      With Лист1
      m = .Range("A1").Resize(.Cells(.Rows.Count, 1).End(xlUp).Row, 6)
      End With
      With CreateObject("Scripting.Dictionary")
      For i = 1 To UBound(m)
          .Item(m(i, 1)) = .Item(m(i, 1)) + m(i, 6)
      Next i
      Лист1.Range("L1").Resize(.Count) = Application.Transpose(.keys)
      Лист1.Range("M1").Resize(.Count) = Application.Transpose(.items)
      End With
End Sub
[/vba]

Автор - alex77755
Дата добавления - 09.02.2015 в 22:51
bob3 Дата: Понедельник, 09.02.2015, 23:02 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Спасибо!
На листе выведены совпадения и ошибки, можно сделать так, чтобы строки с ошибками сваливались на новый лист??
Заранее благодарю!!
К сообщению приложен файл: 5405084.xls (49.0 Kb)


Сообщение отредактировал bob3 - Понедельник, 09.02.2015, 23:08
 
Ответить
СообщениеСпасибо!
На листе выведены совпадения и ошибки, можно сделать так, чтобы строки с ошибками сваливались на новый лист??
Заранее благодарю!!

Автор - bob3
Дата добавления - 09.02.2015 в 23:02
Manyasha Дата: Вторник, 10.02.2015, 10:15 | Сообщение № 4
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
bob3, доброе утро. Работу макроса alex77755 не проверяла, но попробуйте вместо
[vba]
Код
Лист1.Range("L1").Resize(.Count) = Application.Transpose(.keys)
Лист1.Range("M1").Resize(.Count) = Application.Transpose(.items)
[/vba]
написать
[vba]
Код
Лист2.Range("L1").Resize(.Count) = Application.Transpose(.keys)
Лист2.Range("M1").Resize(.Count) = Application.Transpose(.items)
[/vba]
где Лист2 - это лист куда, должны сваливаться ошибки.


ЯД: 410013299366744 WM: R193491431804

Сообщение отредактировал Manyasha - Вторник, 10.02.2015, 10:16
 
Ответить
Сообщениеbob3, доброе утро. Работу макроса alex77755 не проверяла, но попробуйте вместо
[vba]
Код
Лист1.Range("L1").Resize(.Count) = Application.Transpose(.keys)
Лист1.Range("M1").Resize(.Count) = Application.Transpose(.items)
[/vba]
написать
[vba]
Код
Лист2.Range("L1").Resize(.Count) = Application.Transpose(.keys)
Лист2.Range("M1").Resize(.Count) = Application.Transpose(.items)
[/vba]
где Лист2 - это лист куда, должны сваливаться ошибки.

Автор - Manyasha
Дата добавления - 10.02.2015 в 10:15
bob3 Дата: Вторник, 10.02.2015, 14:05 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Заменила, всё равно на новый лист не вываливается, вообще ничего не происходит((((я уже не знаю, что делать
 
Ответить
СообщениеЗаменила, всё равно на новый лист не вываливается, вообще ничего не происходит((((я уже не знаю, что делать

Автор - bob3
Дата добавления - 10.02.2015 в 14:05
alex77755 Дата: Вторник, 10.02.2015, 22:53 | Сообщение № 6
Группа: Проверенные
Ранг: Обитатель
Сообщений: 362
Репутация: 64 ±
Замечаний: 0% ±

Цитата
я уже не знаю, что делать

Вникать!
[vba]
Код
Option Explicit

Sub Отработано()
Dim K, M, i, OD
Set OD = CreateObject("Scripting.Dictionary")
        With Лист1
        M = .Range("A2").Resize(.Cells(.Rows.Count, 1).End(xlUp).Row, 8)
        End With
           
        With Лист2
        K = .Range("A2").Resize(.Cells(.Rows.Count, 1).End(xlUp).Row, 12)
        End With

        For i = 1 To UBound(M)
           If M(i, 1) <> "" Then OD(M(i, 1)) = OD(M(i, 1)) + M(i, 6)
        Next i
           
        For i = 1 To UBound(K)
           If K(i, 1) <> "" Then OD(K(i, 1)) = OD(K(i, 1)) - K(i, 12)
        Next i
           
        For Each i In OD.keys
           If OD.Item(i) = 0 Then OD.Remove (i)
        Next
           
        With Worksheets.Add
           .Range("A1").Resize(OD.Count) = Application.Transpose(OD.keys)
           .Range("B1").Resize(OD.Count) = Application.Transpose(OD.items)
           .Columns(1).ColumnWidth = 15
        End With
         
End Sub
   
[/vba]
К сообщению приложен файл: 666.rar (15.5 Kb)


Могу помочь в VB6, VBA
Alex77755@mail.ru


Сообщение отредактировал alex77755 - Вторник, 10.02.2015, 22:55
 
Ответить
Сообщение
Цитата
я уже не знаю, что делать

Вникать!
[vba]
Код
Option Explicit

Sub Отработано()
Dim K, M, i, OD
Set OD = CreateObject("Scripting.Dictionary")
        With Лист1
        M = .Range("A2").Resize(.Cells(.Rows.Count, 1).End(xlUp).Row, 8)
        End With
           
        With Лист2
        K = .Range("A2").Resize(.Cells(.Rows.Count, 1).End(xlUp).Row, 12)
        End With

        For i = 1 To UBound(M)
           If M(i, 1) <> "" Then OD(M(i, 1)) = OD(M(i, 1)) + M(i, 6)
        Next i
           
        For i = 1 To UBound(K)
           If K(i, 1) <> "" Then OD(K(i, 1)) = OD(K(i, 1)) - K(i, 12)
        Next i
           
        For Each i In OD.keys
           If OD.Item(i) = 0 Then OD.Remove (i)
        Next
           
        With Worksheets.Add
           .Range("A1").Resize(OD.Count) = Application.Transpose(OD.keys)
           .Range("B1").Resize(OD.Count) = Application.Transpose(OD.items)
           .Columns(1).ColumnWidth = 15
        End With
         
End Sub
   
[/vba]

Автор - alex77755
Дата добавления - 10.02.2015 в 22:53
bob3 Дата: Среда, 11.02.2015, 09:26 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 17
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Большое спасибо!!! Я вникну!!
 
Ответить
СообщениеБольшое спасибо!!! Я вникну!!

Автор - bob3
Дата добавления - 11.02.2015 в 09:26
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Вывод отдельного листа с несовпадениями (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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