2014-10-31 4 views
0

Элемент Excel - ячейки (1, "Z") содержит некоторое значение. Теперь я хочу написать 10 ячеек после Z. Это будут ячейки (1, «AJ»). Могу ли я написать макрос, который добавит 10 в 'Z' и даст мне имя столбца excel, т. Е. AJ?Macro to Increment column имя excel динамически

+2

Да, вы можете. Я могу дать вам ответ, но я хочу, чтобы вы сначала попробовали. Вы можете использовать цикл 'FOR', используя' STEP'. Попробуйте, и если вы застряли, тогда отправьте код, который вы попробовали, и мы его возьмем –

+0

Также 'cells (1," Z ")' может быть записано как 'cells (1,26)' или 'cells (1, i) 'где' i' может быть увеличено в цикле 'For'. :) –

ответ

2

Вы можете добавить две функции вашего проекта:

  1. Первое, превращая буквы в соответствующий номер столбца;
  2. Второе, преобразование числа (после добавления) в букву.

Так вот вы идете:

Sub YourMacro() 

columnLetter = ColLtr(ColNum("Z") + 10) 
MsgBox columnLetter 

End Sub 

Function ColLtr(iCol As Long) As String 
    If iCol > 0 And iCol <= Columns.Count Then 
     ColLtr = Evaluate("substitute(address(1, " & iCol & ", 4), ""1"", """")") 
    End If 
End Function 

Function ColNum(iCol As String) As Long 
    ColNum = Range(iCol & 1).Column 
End Function 

Затем повторно написать код в соответствии с вашими потребностями, это просто дает вам обратно алфавитный версию «10 колонок после Z».

+0

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

+3

Вам не пришлось прикладывать столько боли к написанию чего-то, что уже было описано в SO раньше;) См. [This] (http://stackoverflow.com/questions/10106465/excel-column-number-from-column -name/10107264 # 10107264) –

+2

@SiddharthRout вы правы, пользователи всегда должны приложить некоторые усилия, так как некоторые ответы действительно легко найти. Попытаюсь воздержаться от моей воли писать код в следующий раз и немного подождать для усилий пользователя :) –