Страницы: 1
RSS
Поиск номера(букв) столбца по содержимому в строке., Интересует и VBA и Формульный варианты. Необходимо из одного файла вставить в другой файл номер(буквы) столбца из другого файла.
 
Уважаемые знатоки Excel Здравствуйте!
Помогите пожалуйста.
Есть файл "1 УЧЕТ.xlsx" в нём лист "Argus" на листе таблица, в ней столбец "Курс доллара". Файл доступен только для чтения и в файле другой оператор постоянно то добавляет то убирает какой-то столбец, соответственно имя необходимого столбца постоянно меняется и просто ссылка не работает. Необходимо чтоб в другом файле был всего один столбец в который при открытии будут добавляться курсы за новые даты. Мой вариант в рабочий файл в какую-то ячейку вставить имя искомого столбца и потом формулой уже растягивать на все даты. Но вот с именем искомого столбца помощь и нужна, интересны оба варианта: VBA и формулы. Может кто-то вообще другой вариант решения вопроса предложит.
Изменено: DjAlex77 - 18.09.2020 11:14:58
 
DjAlex77,
вариант 1
сделать именованный диапазон и работать с ним.
Вариант 2
если строки не ездят, то
=INDEX($1:$1048576;ROW();MATCH("Курс доллара";$2:$2;))
По вопросам из тем форума, личку не читаю.
 
DjAlex77, свои сообщения можно редактировать. В том числе добавлять файлы. И для этого не нужно создавать отдельное сообщение.
 
Цитата
БМВ написал:
=INDEX($1:$1048576;ROW();MATCH("Курс доллара";$2:$2;))
так вроде получается что имя столбца будет не известно какое...
Цитата
DjAlex77 написал:
имя необходимого столбца постоянно меняется
или наверное я не правильно поняЛ)
Изменено: Mershik - 18.09.2020 11:12:47
Не бойтесь совершенства. Вам его не достичь.
 
БМВ, Файл с таблицей изменять не могу - нет доступа (только для чтения). Если б можно было изменять, то вставил бы ячейку с формулой =СТОЛБЕЦ(AJ2), дал бы имя этой ячейке, а имя бы уже использовал в формулах своего файла.
 
DjAlex77,
Код
' макрос в книгу в которую будете копировать данные и запускать так же из это книги
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

Изменено: Mershik - 18.09.2020 11:48:46
Не бойтесь совершенства. Вам его не достичь.
 
Цитата
БМВ написал:
если строки не ездят, то=INDEX($1:$1048576;ROW();MATCH("Курс доллара";$2:$2;))
Вечно не по-русски напишет...
Оно и понятно, БаварияМоторсВэркэ
Вот почти то же самое, но на понятном языке
=ИНДЕКС(1:1048576;ПОИСКПОЗ(43466;A:A;0);ПОИСКПОЗ("Курс доллара";2:2;0))
Всё сложное - не нужно. Всё нужное - просто /М. Т. Калашников/
 
Михаил Лебедев, почему-то выдаёт значение 69,4706 хотя столбец № 36.
 
Цитата
Mershik написал:
Set Wb = Workbooks("1 УЧЕТ.xlsx") 'это Ваша книга которую открываете для чтения
Выдаёт ошибку. Подскажите пожалуйста как в Вашем коде путь к файлу прописать? К примеру "G:\ТОВО\Производственный департамент"
 
DjAlex77, макрос написан для случая когда два файла открыты и тот куда вставляете и тот из которого копируете - открыты в режиме только для чтения

Цитата
DjAlex77 написал:
путь к файлу прописать?
https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=8&TID=15172
Изменено: Mershik - 18.09.2020 15:50:17
Не бойтесь совершенства. Вам его не достичь.
 
Цитата
DjAlex77 написал:
почему-то выдаёт значение 69,4706 хотя...
43466 замените на дату, на которую надо курс
Всё сложное - не нужно. Всё нужное - просто /М. Т. Калашников/
 
Mershik, Михаил Лебедев, Спасибо Огромное! Оба варианта хороши. Спасибо за Ваше время!!!

Подскажите пожалуйста, как изменить ссылку 1:1048576 или как её зафиксировать? При протягивании формулы на другие ячейки ссылка слетает. Получается нужно в ручную в каждой ячейке прописывать.

Почему-то
Код
ПОИСКПОЗ(44091;'G:\ТОВО\Депт\[1 УЧЕТ.xlsx]Argus'!A:A;0)
выдаёт № строки 270, а
Код
ПОИСКПОЗ(44092;'G:\ТОВО\Депт\[1 УЧЕТ.xlsx]Argus'!A:A;0)
выдаёт № 3 если открыть файл [1 УЧЕТ.xlsx] то 3 меняется на 271, но если снова открыть рабочий файл не открывая [1 УЧЕТ.xlsx] снова будет 3.
 
Цитата
DjAlex77 написал:
Михаил Лебедев  написал:=ИНДЕКС(1:1048576;ПОИСКПОЗ(43466;A:A;0);ПОИСКПОЗ("Курс доллара";2:2;0))подскажите пожалуйста, как изменить ссылку 1:1048576
Вечно он по-русски с ошибками пишет  :D
  $1:$1048576
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
Вечно он по-русски с ошибками пишет     $1:$1048576
У меня просто долларов нету :)
Изменено: Михаил Лебедев - 21.09.2020 04:53:50
Всё сложное - не нужно. Всё нужное - просто /М. Т. Калашников/
 
Михаил Лебедев, Подскажите пожалуйста, почему
Код
ПОИСКПОЗ(44092;'G:\ТОВО\Депт\[1 УЧЕТ.xlsx]Argus'!A:A;0)

не корректно определяет номер строки?
Почему-то не нравится именно дата 19.09.2020. Если параллельно открыть файл [1 УЧЕТ.xlsx] то значение обновляется и всё корректно. Если снова открыть исходный файл без открытия [1 УЧЕТ.xlsx] снова "3" при этом с другими датами всё нормально.
Страницы: 1
Наверх