Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.12.2011, 15:49   #1
Snekich
Форумчанин
 
Аватар для Snekich
 
Регистрация: 19.11.2011
Сообщений: 128
По умолчанию Буквы столбцов перевести в цифры

исходные данные для работы макроса с таблицей заполняются в ячейках.
В частности в ячейках указываются БУКВЫ столбцов с которыми потом макрос должен работать. (Например: B )

А в самом макросе в некоторых действиях необходимо указывать порядковый номер столбца, либо "расстояние" между столбцами (количество столбцов между ячейками).

Например при работе автофильтра, указывается порядковый номер столбца для которого применяется автофильтр (автофильтр начинается со столбца А)
ActiveSheet.Range("$A$1:$z$100").Au toFilter Field:=2, Criteria1:="=значение*", Operator:=xlAnd

Или, например, в меня в одной из функций указывается ячейка и расстояние в столбцах до другой ячейке.
А в исходных данных у меня только "буквенные" обозначения двух этих ячеек т.е. мне зная столбцы надо узнать между ними "расстояние".

КАК зная букву узнать порядковый номер столбца, желательно что бы не было ограничений на количество столбцов (т.е. без прямого "ручного" присвоения заранее каждой букве соответствующую цифру.) ?
Нет ничего невозможного, главное верить в это.
Snekich вне форума Ответить с цитированием
Старый 16.12.2011, 16:37   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Кое-что по теме есть здесь:
http://www.planetaexcel.ru/forum.php?thread_id=19063

Самый простой вариант (если открыта хоть одна книга):

Код:
Sub test2()
    буква$ = "AD"
    столбец = Range(буква$ & 1).Column
    MsgBox столбец
End Sub
Универсальный способ:
Код:
Sub test()
    буква$ = "AD"
    столбец = Val(Replace(Application.ConvertFormula("$" & буква$ & "1", xlA1, xlR1C1), "RC", ""))
    MsgBox столбец
End Sub
EducatedFool на форуме Ответить с цитированием
Старый 16.12.2011, 17:05   #3
nerv
Форумчанин
 
Аватар для nerv
 
Регистрация: 26.04.2010
Сообщений: 450
По умолчанию

Код:
Sub io()
MsgBox Columns(1).Address '// По цифре букву
MsgBox Columns("A").Column '// По букве цифру
End Sub
Цитата:
А в самом макросе в некоторых действиях необходимо указывать порядковый номер столбца, либо "расстояние" между столбцами (количество столбцов между ячейками).
Порядковый номер столбца знать не обязательно. Можно использовать смещение
Код:
Sub io()
MsgBox Columns("A").Offset(, 2).Column '// Смещение от столбца А на два вправо
MsgBox Columns("A")(3).Column '// Тоже самое
End Sub
Тишина – самый громкий звук

Последний раз редактировалось nerv; 16.12.2011 в 17:12.
nerv вне форума Ответить с цитированием
Старый 16.12.2011, 20:26   #4
Snekich
Форумчанин
 
Аватар для Snekich
 
Регистрация: 19.11.2011
Сообщений: 128
По умолчанию

Columns("A").Column
как раз то что надо!
Всем спасибо!
Нет ничего невозможного, главное верить в это.
Snekich вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Буквы в цифры gamaiunov_alex Microsoft Office Excel 5 19.04.2011 09:40
Системы счисления. Буквы <-> цифры. Zhenya-Pvl Общие вопросы C/C++ 12 21.02.2011 20:57
Цифры буквы в делфи MrMorozko Помощь студентам 2 01.11.2010 23:47
Как изменить цифры на буквы Артем125 Microsoft Office Excel 1 18.02.2010 13:44
Буквы или Цифры moff Общие вопросы C/C++ 2 25.10.2009 18:45