Мне нужно сравнить две таблицы, а именно по столбцу номер инвойса. В первой таблице нужно найти номера инвойсов, которых нет во второй таблице и эти отсутствующие номера каким-то образом выделить из всех остальных, быть может сделать так, что они выделятся в отдельную таблицу, или же просто чтобы после последнего столбца первой таблицы любой символ, т.е. в следующем столбце после последнего таблицы, какой-нибудь символ стоял... Или ещё как-то... Не знаю, возможно ли так сделать, чтобы они автоматически выделились каким-то цветом, но думаю, эта была бы не подходящая идея, ведь тогда нужно было бы тупо просматривать всю таблицу и искать глазами выделенные строки, ведь по цвету сортировать нельзя, насколько я знаю.
Мне нужно сравнить две таблицы, а именно по столбцу номер инвойса. В первой таблице нужно найти номера инвойсов, которых нет во второй таблице и эти отсутствующие номера каким-то образом выделить из всех остальных, быть может сделать так, что они выделятся в отдельную таблицу, или же просто чтобы после последнего столбца первой таблицы любой символ, т.е. в следующем столбце после последнего таблицы, какой-нибудь символ стоял... Или ещё как-то... Не знаю, возможно ли так сделать, чтобы они автоматически выделились каким-то цветом, но думаю, эта была бы не подходящая идея, ведь тогда нужно было бы тупо просматривать всю таблицу и искать глазами выделенные строки, ведь по цвету сортировать нельзя, насколько я знаю.
Сортировать по цвету в экселях 2007/10 и т.д. можно, но само окрашивание происходит долго, поставить метки символом (через массив) можно намного быстрее.
Сортировать по цвету в экселях 2007/10 и т.д. можно, но само окрашивание происходит долго, поставить метки символом (через массив) можно намного быстрее.Hugo
Sub ertert() Dim x, i&: Application.ScreenUpdating = False With Sheets("Incident Management") x = .Range("E1:G" & .Cells(Rows.Count, 5).End(xlUp).Row).Value End With With CreateObject("Scripting.Dictionary") .CompareMode = 1 For i = 2 To UBound(x) .Item(x(i, 1)) = x(i, 3) Next i
With Sheets("Open Incidents") With .Range("D1:G" & .Cells(Rows.Count, 4).End(xlUp).Row) x = .Value .Columns(4).Offset(1).Interior.Color = xlNone End With .Activate End With
For i = 2 To UBound(x) If .Exists(x(i, 1)) Then If .Item(x(i, 1)) <> x(i, 4) Then Cells(i, 7).Interior.ColorIndex = 45 End If Next i End With Application.ScreenUpdating = True End Sub
[/vba]
Потом, чтоб я не выделил и когда б я не попытался выполнить его, получаю следующее сообщение:
Run-time error '9':
Subscript out of range
Contnue End Debug Help
При чём кнопка "Continue" не активна.
что-то не получается у меня с этим макросом.
Может делаю что-то не так?
Вот, что я делаю.
Создаю следующий макрос: [vba]
Код
Option Explicit Option Compare Text
Sub ertert() Dim x, i&: Application.ScreenUpdating = False With Sheets("Incident Management") x = .Range("E1:G" & .Cells(Rows.Count, 5).End(xlUp).Row).Value End With With CreateObject("Scripting.Dictionary") .CompareMode = 1 For i = 2 To UBound(x) .Item(x(i, 1)) = x(i, 3) Next i
With Sheets("Open Incidents") With .Range("D1:G" & .Cells(Rows.Count, 4).End(xlUp).Row) x = .Value .Columns(4).Offset(1).Interior.Color = xlNone End With .Activate End With
For i = 2 To UBound(x) If .Exists(x(i, 1)) Then If .Item(x(i, 1)) <> x(i, 4) Then Cells(i, 7).Interior.ColorIndex = 45 End If Next i End With Application.ScreenUpdating = True End Sub
[/vba]
Потом, чтоб я не выделил и когда б я не попытался выполнить его, получаю следующее сообщение:
Мой второй вопрос ещё. Что не так у меня с формулой ВПР? Как-то ни в какую не хочет работать. Посмотрите, пожалуйста, ячейку F2. Не смотря на то, что этот номер инвойса во второй таблице есть, всё равно пишет #Н/А. И ещё не пойму, почему у номеров инвойсов второй таблицы зелёненький уголок в верхнем левом углу ячейки. Ведь формат ячейки и информация в них такая же, как и в первой таблице у номеров инвойсов, но там нет этой зелёной штучки. Собственно в причине этого, наверное, таится и причина неправильного отображения результата формулы, так как стоит только два раза кликнуть по номеру инвойса во второй таблице, как он тут же исчезает и результат формулы становится правильным (да). Но, как понимаете при десятках тысяч позиций вариант нажатия на каждый номер - не вариант.
итак, показываю лист, в нём уже обе таблицы.
Мой второй вопрос ещё. Что не так у меня с формулой ВПР? Как-то ни в какую не хочет работать. Посмотрите, пожалуйста, ячейку F2. Не смотря на то, что этот номер инвойса во второй таблице есть, всё равно пишет #Н/А. И ещё не пойму, почему у номеров инвойсов второй таблицы зелёненький уголок в верхнем левом углу ячейки. Ведь формат ячейки и информация в них такая же, как и в первой таблице у номеров инвойсов, но там нет этой зелёной штучки. Собственно в причине этого, наверное, таится и причина неправильного отображения результата формулы, так как стоит только два раза кликнуть по номеру инвойса во второй таблице, как он тут же исчезает и результат формулы становится правильным (да). Но, как понимаете при десятках тысяч позиций вариант нажатия на каждый номер - не вариант.pavelasd
Да уж прочёл, и, выделив, весь столбец формат ячеек менял на общий, да и не только на общий, да и формат даже отдельной ячейки потом посмотреть, стоит общий. Плюс я ещё пробовал в первой таблице формат ячеек с номерами инвойсов на текстовый менять, менялось, но формула не действовала :(.
Макрос, наверное, действительно по дороге потерялся, но в принципе я ведь скопировал сюда точь в точь, какой скрипт я вводил. А если нет, то поясните мне, пожалуйста, как мне загрузить сюда таблицу вместе с макросом.
Да уж прочёл, и, выделив, весь столбец формат ячеек менял на общий, да и не только на общий, да и формат даже отдельной ячейки потом посмотреть, стоит общий. Плюс я ещё пробовал в первой таблице формат ячеек с номерами инвойсов на текстовый менять, менялось, но формула не действовала :(.
Макрос, наверное, действительно по дороге потерялся, но в принципе я ведь скопировал сюда точь в точь, какой скрипт я вводил. А если нет, то поясните мне, пожалуйста, как мне загрузить сюда таблицу вместе с макросом.pavelasd
Они уже вписаны в код - такие листы нужно добавить в файл Ну в общем код и файл должны подходить друг к другу! Как убрать зелёные метки - хороший метод "текст по столбцам - готово" этому столбцу.
Они уже вписаны в код - такие листы нужно добавить в файл Ну в общем код и файл должны подходить друг к другу! Как убрать зелёные метки - хороший метод "текст по столбцам - готово" этому столбцу.Hugo
Каких именно команд, и где не нашли? Копируете, выделяете, правой кнопкой, диапазон, спецвставка, сложить... Что именно незнакомо? А вообще мой метод проще
Каких именно команд, и где не нашли? Копируете, выделяете, правой кнопкой, диапазон, спецвставка, сложить... Что именно незнакомо? А вообще мой метод проще Hugo
эх, вновь проблема с функцией ВПР. Некоторые номера инвойсов, которые есть во второй таблице отмечаются в первой таблице как #Н/А, не знаю, быть может это потому, что в первой таблице этот номер инвойса встречается несколько раз, а во второй меньше раз и в первой отмечается этот номер инвойса только столько же раз, сколько он встречается во второй? как же этого избежать? Например, номер инвойса в ячейке B137403. Функция ВПР в столбце F. К сожалению, файл весит больше 100 Kb, поэтому закинул его на файлообменник.
А вот уж нет уж. У Правил есть исключения, но только с разрешения админа. Урезайте файл. Ссылка удалена. Кстати, вы что, хотите кинуть сюда 137 ТЫСЯЧ строк? Да еще с ВПРом? С вами все в порядке?
эх, вновь проблема с функцией ВПР. Некоторые номера инвойсов, которые есть во второй таблице отмечаются в первой таблице как #Н/А, не знаю, быть может это потому, что в первой таблице этот номер инвойса встречается несколько раз, а во второй меньше раз и в первой отмечается этот номер инвойса только столько же раз, сколько он встречается во второй? как же этого избежать? Например, номер инвойса в ячейке B137403. Функция ВПР в столбце F. К сожалению, файл весит больше 100 Kb, поэтому закинул его на файлообменник.
А вот уж нет уж. У Правил есть исключения, но только с разрешения админа. Урезайте файл. Ссылка удалена. Кстати, вы что, хотите кинуть сюда 137 ТЫСЯЧ строк? Да еще с ВПРом? С вами все в порядке?pavelasd
как я только не пробовал урезать так, чтоб сохранилась данная ошибка, ничего не получается. При поднятии соответствующих строк вверх, функция работает нормально. Может можно мне хотя бы на видео снять проблему и выложить здесь ссылку на видео? Или подскажите, пожалуйста, как с админом связаться, что-то я не нашёл этой возможности
как я только не пробовал урезать так, чтоб сохранилась данная ошибка, ничего не получается. При поднятии соответствующих строк вверх, функция работает нормально. Может можно мне хотя бы на видео снять проблему и выложить здесь ссылку на видео? Или подскажите, пожалуйста, как с админом связаться, что-то я не нашёл этой возможности pavelasd
Функция ВПР() всегда работает нормально! Если она даёт #Н/А - значит такого значения не найдено. Разбирайтесь с своими данными - тип данных, лишние пробелы, ну или не там ищите (диапазоны). Ну а от видео толку не будет. Ну разве что если заснимите, как обнаружили причину ошибки
Функция ВПР() всегда работает нормально! Если она даёт #Н/А - значит такого значения не найдено. Разбирайтесь с своими данными - тип данных, лишние пробелы, ну или не там ищите (диапазоны). Ну а от видео толку не будет. Ну разве что если заснимите, как обнаружили причину ошибки Hugo