одной функцией может и не обязательно но мне надо чтобы прямо в этой таблице все генерировалось потому как сама таблица генерируется из программы другой.
Понимаю, что все это выглядит глупо, но происходит на самом деле. Могу прислать даже таблицы (я сам другому не поверил-бы).
Есть список из 2 столбиков - имена абонентов и их телефонные номера.
И. Иванов 12-34-56
П. Петров 65-43-21
................ ..............
и т д
всего 10 000 персон.
Есть другой список из 1000 персон - членов первого списка. Надо, чтоб Эксел нашел с первого списка телефон каждого, и приписал рядом.
Как положено, первый список сортируется по первому столбцу, во втором списке пишутся формулы для каждой персоны:
Lookup($A$1:$B$10000; C1)
Lookup($A$1:$B$10000; C2)
и т д
формула находит персону в первом списке, берет его номер и пишет во втором списке. но не всегда - вдруг в какой-то ячейке вместо номера - 0. до него и после него - все правильно, а в этой - никак. А вот если в формуле вместо 10000 написать 5670 (и если этот абонент находится до этого), тогда номер пишется, а если написать 5671 или больше - уже 0. Это не только в одном месте - в другой ячейке формуле "не нравится" числа больше 5830, и т п.
Сами эти числа ничего не означают - около этих адресов, как абсолютно, так и относительно, ничего не происходит.
Может кто сталкивался с таким явлением? С чем это может быть связано?
ИМХО у тебя проблемы с сортировкой исходного столбца. У меня русский excel и такой функции там нет, но есть аналогичная "ВПР", где 3-им параметром задается тип сортировки. Попробуй поиграться с ним...
Пусть данные расположены на 1 листе рабочей книги, в столбце A - список фамилий, в столбце B - список телефонов, в столбце C - выборка фамилий из общего списка (тоже список), в столбце D - надо получить выборку телефонов.
Поступаем просто - решаем задачу "в лоб". В редакторе VBA создаем стандартный модуль, в который пишем следующее:
Sub ChoiceFromColumne()
Dim iCount As Integer, jCount As Integer
With Sheets(1)
For iCount = 1 To .Cells(1, 1).End(xlDown).Row
For jCount = 1 To .Cells(1, 3).End(xlDown).Row
If .Cells(jCount, 3).Value = .Cells(iCount, 1) Then
.Cells(jCount, 4).Value = .Cells(iCount, 2).Value
End If
Next jCount
Next iCount
End With
End Sub
Вешаем данную процедуру например на кнопку и наслаждаемся результатом.
PS Возможно при большой длине списков будет небыстро, зато гарантированно.
привет народ. такой вопрос: а можно ли как-то переименовать имена столбцов в Excel? то есть чтоб вместо столбцов ABCDE были столбцы Column1, Column2 и т.д.?
Хм-м-м... А зачем это нужно? Возможно ты просто не стой стороны пытаешся решить задачу. Насколько я знаю, можно только переключиться с буквенного отображения на цифровое, но возможно тебе вообще подойдет что-то другое. Ты скажи что ты от этого выиграешь?
Ну вот скриптом и переименовывай при переводе, нафига это на Excel возлагать? В нем можно выбирать либо буквы, либо цифры. Так же ты можешь модифицировать скрипт, чтобы брать в качестве наименований значения в первой строке (как делает тот же офис при слиянии, например).
Скорее всего нужно не A,B,C,D,... переименовывать , а в самом поле в первой строке области таблицы дать нужные имена. В случае koresaram - Column1, Column2 и т.д. Например DBF-файлы именно так и конвертируются.