2012-04-11 13 views

Odpowiedz

130

Myślę, że chcesz tego?

Nazwa kolumny na numer kolumny

Sub Sample() 
    ColName = "C" 
    Debug.Print Range(ColName & 1).Column 
End Sub 

Edycja: w tym również na odwrót, co chcesz

Numer kolumny do kolumny Nazwa

Sub Sample() 
    ColNo = 3 
    Debug.Print Split(Cells(, ColNo).Address, "$")(1) 
End Sub 

FOLLOW UP

jak jeśli mam pole wynagrodzenia na samej górze powiedzmy na komórki C (1,1) i zmienia się, jeżeli plik i przesunięcia kolumny korygującym do jakiegoś innego miejsca powiedzieć F (1 1) wtedy będę musiał zmodyfikować kod, więc chcę, aby kod sprawdził Wynagrodzenie i znaleźć numer kolumny, a następnie wykonać pozostałe operacje zgodnie z tym numerem kolumny.

W takim przypadku polecam korzystania .FIND Zobacz przykład poniżej

Option Explicit 

Sub Sample() 
    Dim strSearch As String 
    Dim aCell As Range 

    strSearch = "Salary" 

    Set aCell = Sheet1.Rows(1).Find(What:=strSearch, LookIn:=xlValues, _ 
    LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ 
    MatchCase:=False, SearchFormat:=False) 

    If Not aCell Is Nothing Then 
     MsgBox "Value Found in Cell " & aCell.Address & _ 
     " and the Cell Column Number is " & aCell.Column 
    End If 
End Sub 

SNAPSHOT

enter image description here

+2

+1 Wielkie oko za szczegóły jak zwykle :) –

+0

jakbym miał pole wynagrodzenia na samej górze, powiedzmy na komórce C (1,1) teraz, jeśli zmienię kolumnę płac i przesunięcie pensji do jakiegoś innego miejsca powiedzmy F (1,1), wtedy będę musiał zmodyfikować kod, więc chcę, żeby kod sprawdził Wynagrodzenie i znajdował numer kolumny, a następnie wykonał resztę operacji zgodnie z tym numerem kolumny. –

+0

@Paritosh Ahuja: Zaktualizowałem wpis. –

4

Podczas gdy szukaliśmy rozwiązania VBA, to był moim najlepszym wynikiem w Google, gdy szukał rozwiązania z formułą, więc dodam to dla każdego, kto tu przyszedł, tak jak ja:

Formularz programu Excel do zwrócenia numeru z kolumny kolumny (od @A. Komentarz klomp za wyżej), gdzie komórka A1 posiada swój list kolumny (s):

= kolumna (pośredni (A1 & "1"))

Ponieważ funkcja pośrednia jest lotny, to przelicza ilekroć każda komórka zostanie zmieniona, więc jeśli masz ich dużo, może spowolnić twój skoroszyt. Rozważmy inne rozwiązanie, takie jak funkcja "kodu", która podaje numer dla znaku ASCII, zaczynając od "A" na poziomie 65. Pamiętaj, że aby to zrobić, musisz sprawdzić, ile cyfr znajduje się w nazwie kolumny, oraz zmienić wynik w zależności od "A", "BB" lub "CCC".

formuła

Excel, aby powrócić list kolumny z numerem (Z tym poprzednim pytaniu How to convert a column number (eg. 127) into an excel column (eg. AA) odpowiedział przez @Ian), gdzie A1 posiada swój numer kolumna:

= Zastępca (adres (1, A1 , 4), "1", "")

Należy pamiętać, że obie te metody działają niezależnie od liczby liter w nazwie kolumny.

Mam nadzieję, że to pomoże komuś innemu.

+0

@ExcelHero Brakuje ci punktu powyższego - w moich rozwiązaniach komórka A1 * zawiera * kolumnę Letter/Number. Twoje rozwiązanie koduje rozwiązanie, aby przekonwertować "A" na 1 lub 1 na "A". Moja wersja pokazuje po prostu, jak to zrobić dynamicznie (chociaż jeśli chcesz kodować, tak, to też możliwe).Wejdź i naprawdę wypróbuj je sam, ponieważ potwierdziłem, że działają. –

0

Można pominąć to wszystko i po prostu umieścić swoje dane w tabeli. Odwołaj się do tabeli i nagłówka, a będzie on całkowicie dynamiczny. Wiem, że to jest od 3 lat temu, ale ktoś może nadal uważać to za przydatne.

Przykładowy kod:

Activesheet.Range("TableName[ColumnName]").Copy 

Można również użyć:

activesheet.listobjects("TableName[ColumnName]").Copy 

Można nawet korzystać z tego systemu referencyjnego w formułach arkusza, jak również. Jest bardzo dynamiczny.

Mam nadzieję, że to pomoże!

-1

Zapis i uruchom następujący kod w oknie Immediate

?cells(,"type the column name here").column 

Na przykład ?cells(,"BYL").column powróci 2014. Kod jest wielkość liter, a więc można napisać ?cells(,"byl").column a wyjście będzie nadal taka sama.

-1

Moim zdaniem najprostszy sposób, aby uzyskać numer kolumny wynosi:
Sub Sample() ColName = ActiveCell.Column MsgBox ColName End Sub

Powiązane problemy