Сравнение колонок в Excel

Программирование на Visual Basic for Applications
SELF
Начинающий
Начинающий
 
Сообщения: 2
Зарегистрирован: 29.10.2004 (Пт) 10:08

Сравнение колонок в Excel

Сообщение SELF » 30.10.2004 (Сб) 9:53

Люди!!!
Как сравнить два листа. Если у них есть по две одинковых колонки, но строки не совпадают. Простая сортировка не поможет - т.к. в одном листе нет кое-чего что есть в другом и наоборот... Можно ли сравнить их по одной колнке и по общим строкам найти разность в значениях другой колонки?
Тьфу ты! Сам запутался вроде...
Проще: есть товар и есть его цена, и есть два прайса (за два дня) надо найти разницу в цене по одинаковым товарам!
Ай, Молодца!
Последний раз редактировалось SELF 31.10.2004 (Вс) 21:21, всего редактировалось 1 раз.

Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Сообщение Vitaly1 » 30.10.2004 (Сб) 14:32

Код: Выделить всё
Sub n()
k = 1

'снимаем жирный шрифт с Лист2
Sheets("Лист2").Activate
Sheets("Лист2").Columns("A:A").Select
    Selection.Font.Bold = False
'Опрос ячеек Лист1
While Sheets("Лист1").Cells(k, 1).Text <> ""
k1 = 1
While Sheets("Лист2").Cells(k1, 1).Text <> ""
'Если первый столбец совпадает а второй нет
If Sheets("Лист1").Cells(k, 1).Text = _
Sheets("Лист2").Cells(k1, 1).Text And _
Sheets("Лист1").Cells(k, 2).Text <> _
Sheets("Лист2").Cells(k1, 2).Text Then
'метим жирным
Sheets("Лист2").Cells(k1, 1).Select
Selection.Font.Bold = True
End If
k1 = k1 + 1
Wend
k = k + 1
Wend

Sheets("Лист2").Activate
Sheets("Лист2").Range("A1").Select
End Sub

SELF
Начинающий
Начинающий
 
Сообщения: 2
Зарегистрирован: 29.10.2004 (Пт) 10:08

Сообщение SELF » 31.10.2004 (Вс) 21:24

2Vitaly1:
Спасибо!
Но это не совсем то что надо...
Видимо неточно задал вопрос (Идиот!))...
Поправил...

А мне еще сказали, что есть функция которая это делает... %0
Счастье - всем! Даром...

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 31.10.2004 (Вс) 22:01

Код: Выделить всё
dim c as range, f as range, fc as long

with worksheets.add
  for each c in worksheets(1).usedrange.columns(1).cells
    set f=worksheets(2).columns(1).find(c.value, xlvalues, xlwhole) 'или наоборот, не помню
    if not f is nothing then
      fc=fc+1
      .cells(fc,1)=c.value
      .cells(fc,2)=c.offset(0,1).value
      .cells(fc,3)=f.offset(0,1).value
    end if
  next
end with
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Tathagata
Новичок
Новичок
 
Сообщения: 36
Зарегистрирован: 26.07.2004 (Пн) 14:56

Сообщение Tathagata » 02.11.2004 (Вт) 10:05

SELF писал(а):2Vitaly1:
Спасибо!
Но это не совсем то что надо...
Видимо неточно задал вопрос (Идиот!))...
Поправил...

А мне еще сказали, что есть функция которая это делает... %0


Гораздо проще это сделать сводными таблицами.


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 84

    TopList