сортировка таблиц в Excel с помощью Vba

  • Автор темы plan905
  • Дата начала
Статус
Закрыто для дальнейших ответов.
P

plan905

#1
Нжуна помощь, сам со своими школьными знаниями байсика стою в тупики и не туда и не сюда...

рассказываю что хочу добиться...
есть список адресов где есть название улицы дома и квартиры, а хочется еще и индекс к адресу приписать...))) таблица с индексами тоже прилагается...

help me... я то знаю что нужно составить цикл, который подберет индекс и знаю как его писать... все это легко... но как брать значения из таблицы, как их туда возращать, я к сожалению...(((не знаю...

поэтому и прошу или ссылку на литру по теме или хотябы кусок программы... или помощь в написании... по возможности отблагодарюю))) хотя возможностей не много, но денег то на счет кину, если сделаем)))) писать сюда или plan.pnz@mail.ru
 
P

plan905

#2
таблица заполнена просто, сначала столбик с фамилией, потом с улицей, следующая номер квартиры...
и вторая таблица, это таблица с индексами, первый столбик название улицы, второй собственно сам индекс!!!


вот и нужно всего навсего сопоставить?????плиз... горит...
 
T

Tanya

#3
Можно использовать функцию =ВПР()

= ВПР(искомое_значение;таблица ;номер_столбца ;интервальный_просмотр)

Столбец A - Фамилия
Столбец B - Улица
Столбец C - Дом
Столбец D - Квартира
Столбец E - Индекс

то есть в столбик E вводим формулу:
= ЕСЛИ(ЕНД(ВПР($B:$B; Лист2!$A$2:$B$2000; 2; Ложь); " нет индекса "; ВПР($B:$B; Лист2!$A$2:$B$2000; 2; Ложь))

Пояснения:
ВПР($B:$B; Лист2!$A$2:$B$2000; 2; Ложь)
искомое_значение = $B:$B - улица
Лист2!$A$2:$B$2000 - на листе Лист2 в колонках A и B расположены улицы и соотв. им индексы (1 строка для заголовка)
Строк в примере 1999, но, конечно может быть и больше и меньше ))))
2 - возвращаемое значение из таблицы индексов находится во втором столбце
Ложь - ищем точное соответствие

Если поиск в таблице индекса не даст результата, то формула вернет значение ошибки #Н/Д.
Для того что бы не портить вид первой таблицы :wacko:)) в формулу забиваем проверку на такую ошибку:
ЕНД(ВПР($B:$B; Лист2!$A$2:$B$2000; 2; Ложь)) - она возвращает Истина(значение формулы #Н/Д) или Ложь

и последний штрих: если формула возвращает ошибку, то ничего не выводим, а если возвращает, то выводим ее результат:
= ЕСЛИ(ЕНД(ВПР($B:$B; Лист2!$A$2:$B$2000; 2; Ложь); " нет индекса "; ВПР($B:$B; Лист2!$A$2:$B$2000; 2; Ложь))


Вот как-то так ... Справка по этим формулам есть в Excel, и там скорее всего будет описано понятнее )))
 
N

Nightrain

#4
Код:
Private Sub CommandButton1_Click()
Dim i As Integer
Dim j As Integer
Dim street As String
Dim Sh As Worksheet

Set Sh = Sheets("Indexes")
i = 2
Do While Cells(i, 1) <> ""
street = Cells(i, 2)
j = 2
Do While Sh.Cells(j, 1) <> ""
If Sh.Cells(j, 1) = street Then
Cells(i, 5) = Sh.Cells(j, 2)
Exit Do
End If
j = j + 1
Loop
i = i + 1
Loop
Set Sh = Nothing
End Sub
Файл с рабочим примером отправил на почту
 
Статус
Закрыто для дальнейших ответов.