2012-04-11 28 views
52

¿Cómo obtener el número de columna del nombre de la columna en Excel usando la macro de Excel?Número de columna de Excel del nombre de la columna

+1

tener un aspecto un esta pregunta: http://stackoverflow.com/q/22708/390819 Hay una solución de VBA allí también – GolfWolf

+1

Columna nombre como en la letra o como en el encabezado? – Fionnuala

+2

@wolf: Eso es lo contrario de lo que OP quiere :) –

Respuesta

130

Creo que quieres esto?

Nombre de columna a columna Número

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

Editar: También incluyendo la inversa de lo que quiere

Columna Número de columna de nombre

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

SEGUIMIENTO UP

Al igual que si tengo campo de salario en la parte superior permite decir en la celda C (1,1) ahora si alterar el archivo y la columna salario muevo a otro lugar decir F (1, 1) entonces tendré que modificar el código, así que quiero que el código verifique el salario y encuentre el número de columna y luego haga el resto de las operaciones de acuerdo con ese número de columna.

En tal caso yo recomendaría usar .FIND Vea este ejemplo de abajo

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 

INSTANTÁNEA

enter image description here

+2

+1 Gran ojo para los detalles como de costumbre :) –

+0

si tengo un campo de salario en la parte superior digamos en la celda C (1,1) ahora si modifico el archivo y cambio de columna salarial a otro lugar digamos F (1,1) entonces tendré que modificar el código, así que quiero que el código verifique el salario y encuentre el número de columna y luego haga el resto de las operaciones de acuerdo con ese número de columna. –

+0

@Paritosh Ahuja: He actualizado la publicación. –

4

Mientras buscaba una solución de VBA, esta fue mi mejor resultado en google cuando buscaba una solución de fórmula, así que agregaré esto para cualquiera que haya venido por eso como lo hice:

fórmula de Excel para devolver el número de una columna con la letra (desde @A. El comentario de klomp arriba), donde la celda A1 contiene la carta de columna (s):

= columna (indirecta (A1 & "1"))

Como la función indirecta es volátil, se vuelve a calcular cada vez cualquier celda se cambia, por lo que si tiene muchas puede ralentizar su libro de trabajo. Considere otra solución, como la función 'código', que le da el número de un carácter ASCII, comenzando con 'A' en 65. Tenga en cuenta que para hacer esto, necesitará verificar cuántos dígitos hay en el nombre de la columna, y altere el resultado según 'A', 'BB' o 'CCC'.

fórmula

Excel para devolver la carta columna de un número (A partir de esta pregunta anterior How to convert a column number (eg. 127) into an excel column (eg. AA), respondida por @Ian), donde A1 tiene su número de columna:

= sustituto (dirección (1, A1 , 4), "1", "")

Tenga en cuenta que ambos métodos funcionan independientemente de la cantidad de letras en el nombre de la columna.

Espero que esto ayude a alguien más.

+0

@ExcelHero Te estás perdiendo el sentido de lo anterior: en mis soluciones, la celda A1 * contiene * la columna Letra/Número. Su solución codifica la solución para convertir "A" a 1, o 1 a "A". Mi versión simplemente muestra cómo hacer esto de forma dinámica (aunque si quieres hardcode, sí, eso también es posible).Por favor, entre y pruebe estas usted mismo, ya que he confirmado que funcionan. –

0

Puede omitir todo esto y simplemente poner sus datos en una tabla. Luego consulte la tabla y el encabezado, y será completamente dinámico. Sé que esto es de hace 3 años, pero a alguien todavía le puede resultar útil.

código Ejemplo:

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

También puede utilizar:

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

Incluso puede utilizar este sistema de referencia en las fórmulas de la hoja de trabajo también. Es muy dinámico.

Espero que esto ayude!

-1

escribir y ejecutar el siguiente código en la ventana Inmediato

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

Por ejemplo ?cells(,"BYL").column volverá 2014. El código es sensible a las mayúsculas, por lo tanto usted puede escribir ?cells(,"byl").column y la salida seguirá siendo la misma.

-1

En mi opinión la forma más simple para obtener el número de columna es:
Sub Sample() ColName = ActiveCell.Column MsgBox ColName End Sub

Cuestiones relacionadas