Поиск номера(букв) столбца по содержимому в строке., Интересует и VBA и Формульный варианты. Необходимо из одного файла вставить в другой файл номер(буквы) столбца из другого файла.
Уважаемые знатоки Excel Здравствуйте! Помогите пожалуйста. Есть файл "1 УЧЕТ.xlsx" в нём лист "Argus" на листе таблица, в ней столбец "Курс доллара". Файл доступен только для чтения и в файле другой оператор постоянно то добавляет то убирает какой-то столбец, соответственно имя необходимого столбца постоянно меняется и просто ссылка не работает. Необходимо чтоб в другом файле был всего один столбец в который при открытии будут добавляться курсы за новые даты. Мой вариант в рабочий файл в какую-то ячейку вставить имя искомого столбца и потом формулой уже растягивать на все даты. Но вот с именем искомого столбца помощь и нужна, интересны оба варианта: VBA и формулы. Может кто-то вообще другой вариант решения вопроса предложит.
DjAlex77, вариант 1 сделать именованный диапазон и работать с ним. Вариант 2 если строки не ездят, то =INDEX($1:$1048576;ROW();MATCH("Курс доллара";$2:$2;))
БМВ, Файл с таблицей изменять не могу - нет доступа (только для чтения). Если б можно было изменять, то вставил бы ячейку с формулой =СТОЛБЕЦ(AJ2), дал бы имя этой ячейке, а имя бы уже использовал в формулах своего файла.
' макрос в книгу в которую будете копировать данные и запускать так же из это книги
Sub dsd()
Dim i As Long, lr As Long
Dim Wb As Workbook, Wb2 As Workbook
Dim cell As Range
Set Wb = Workbooks("1 УЧЕТ.xlsx") 'это Ваша книга которую открываете для чтения
Set Wb2 = ActiveWorkbook 'это Ваша книга в которую будете переносить данные
lr = Wb.Worksheets("Argus").Cells(Rows.Count, 1).End(xlUp).Row
Set cell = Wb.Worksheets("Argus").Rows("2:5").Find("Курс доллара") ' имя листа из которого будем копировать
If cell Is Nothing Then MsgBox "Ячейка с названием Курс доллара в файле " & Wb2.Name & " не найдена ": Exit Sub
For i = 5 To lr
Wb2.Worksheets("Argus").Cells(i, 36) = Wb.Worksheets("Argus").Cells(i, cell.Column)
Next i
End Sub
БМВ написал: если строки не ездят, то=INDEX($1:$1048576;ROW();MATCH("Курс доллара";$2:$2;))
Вечно не по-русски напишет... Оно и понятно, БаварияМоторсВэркэ Вот почти то же самое, но на понятном языке =ИНДЕКС(1:1048576;ПОИСКПОЗ(43466;A:A;0);ПОИСКПОЗ("Курс доллара";2:2;0))
Всё сложное - не нужно. Всё нужное - просто /М. Т. Калашников/
Mershik, Михаил Лебедев, Спасибо Огромное! Оба варианта хороши. Спасибо за Ваше время!!!
Подскажите пожалуйста, как изменить ссылку 1:1048576 или как её зафиксировать? При протягивании формулы на другие ячейки ссылка слетает. Получается нужно в ручную в каждой ячейке прописывать.
DjAlex77 написал: Михаил Лебедев написал:=ИНДЕКС(1:1048576;ПОИСКПОЗ(43466;A:A;0);ПОИСКПОЗ("Курс доллара";2:2;0))подскажите пожалуйста, как изменить ссылку 1:1048576
Вечно он по-русски с ошибками пишет :D $1:$1048576
не корректно определяет номер строки? Почему-то не нравится именно дата 19.09.2020. Если параллельно открыть файл [1 УЧЕТ.xlsx] то значение обновляется и всё корректно. Если снова открыть исходный файл без открытия [1 УЧЕТ.xlsx] снова "3" при этом с другими датами всё нормально.