una - Referencia de Excel a la celda actual
referencia de celdas (11)
¿Cómo obtengo una referencia a la celda actual?
Por ejemplo, si quiero mostrar el ancho de la columna A, podría usar lo siguiente:
=CELL("width", A2)
Sin embargo, quiero que la fórmula sea algo como esto:
=CELL("width", THIS_CELL)
Crea una fórmula llamada llamada THIS_CELL
- En la hoja de trabajo actual, seleccione la celda A1 (¡esto es importante!)
- Abra el
Name Manager
(Ctl + F3) - Haga clic en
New...
- Ingrese "THIS_CELL" (o simplemente "THIS", que es mi preferencia) en
Name:
Ingrese la siguiente fórmula en
Refers to:
=!A1
NOTA: asegúrese de que la celda A1 esté seleccionada . Esta fórmula es relativa a ActiveCell.
En
Scope:
seleccioneWorkbook
.- Haga clic en
OK
y cierre elName Manager
Usa la fórmula en la hoja de trabajo exactamente como querías
=CELL("width",THIS_CELL)
EDIT: mejor solución que usar INDIRECT()
Vale la pena señalar que la solución que he dado debe preferirse a cualquier solución que utilice la función INDIRECT()
por dos motivos:
- No es volátil, mientras que
INDIRECT()
es una función de Excel volátil y, como resultado, reducirá drásticamente el cálculo del libro cuando se usa mucho. - Es mucho más simple y no requiere convertir una dirección (en forma de
ROW()
COLUMN()
) en una referencia de rango a una dirección y volver a una referencia de rango nuevamente.
EDITAR: También vea esta pregunta para obtener más información sobre los rangos con nombre dependientes de la hoja del libro de trabajo.
EDITAR: También vea la respuesta de @imix a continuación para una variación de esta idea (usando referencias de estilo RC). En ese caso, podría usar =!RC
para la fórmula de rango denominada THIS_CELL
, o simplemente usar RC
directamente.
Dentro de las tablas puede usar [@]
que (desafortunadamente) Excel expande automáticamente a Table1[@]
pero funciona. (Estoy usando Excel 2010)
Por ejemplo, al tener dos columnas [Change]
y [Balance]
, poner esto en la columna [Balance]
:
=OFFSET([@], -1, 0) + [Change]
Tenga en cuenta, por supuesto, que esto depende del orden de las filas (al igual que la mayoría de las otras soluciones), por lo que es un poco frágil.
EDITAR: lo siguiente es incorrecto, porque Cell ("ancho") devuelve el ancho de la última celda modificada .
Cell("width")
devuelve el ancho de la celda actual, por lo que no necesita una referencia a la celda actual. Si necesita uno, sin embargo, la cell("address")
devuelve la dirección de la celda actual, por lo que si necesita una referencia a la celda actual, use indirect(cell("address"))
. Ver la documentación: http://www.techonthenet.com/excel/formulas/cell.php
Encontré que la mejor manera de manejar esto (para mí) es usar lo siguiente:
Dim MyString as String
MyString = Application.ThisCell.Address
Range(MyString).Select
Espero que esto ayude.
Hay una manera mejor que es más segura y no ralentizará su aplicación. Cómo se configura Excel, una celda puede tener un valor o una fórmula; la fórmula no puede referirse a su propia celda. Terminas con un ciclo infinito, ya que el nuevo valor causaría otro cálculo ... Use una columna auxiliar para calcular el valor según lo que haya puesto en la otra celda. Por ejemplo:
La columna A es verdadera o falsa, la columna B contiene un valor monetario, la columna C contiene la siguiente fórmula: = B1
Ahora, para calcular que la columna B se resaltará en amarillo en un formato condicional solo si la columna A es verdadera y la columna B es mayor que cero ...
= Y (A1 = verdadero, C1> 0)
A continuación, puede optar por ocultar la columna C
Podrías usar
=CELL("width", INDIRECT(ADDRESS(ROW(), COLUMN())))
Sin INDIRECTO (): =CELL("width", OFFSET($A$1,ROW()-1,COLUMN()-1) )
Varios años demasiado tarde:
Solo para completar, quiero dar una respuesta más:
Primero, vaya a Excel-Options -> Formulas y habilite las referencias R1C1 . Entonces usa
=CELL("width", RC)
RC
siempre refiere la Fila actual, la Columna actual, es decir, "esta celda".
La solución de Rick Teachey es básicamente una modificación para hacer lo mismo posible en el estilo de referencia A1 (ver también el comentario de GSerg a la respuesta de Joey y anotar su comentario a la respuesta de Patrick McDonald).
Aclamaciones
:-)
=ADDRESS(ROW(),COLUMN(),4)
nos dará la dirección relativa de la celda actual. =INDIRECT(ADDRESS(ROW(),COLUMN()-1,4))
nos dará el contenido de la celda a la izquierda de la celda actual =INDIRECT(ADDRESS(ROW()-1,COLUMN(),4))
nos da el contenido de la celda sobre la celda actual (ideal para calcular los totales acumulados)
El uso de la función CELL () devuelve información sobre la última celda que se modificó. Entonces, si ingresamos una nueva fila o columna, la referencia CELL () se verá afectada y ya no será la celda actual.
A2
ya es una referencia relativa y cambiará cuando mueva la celda o copie la fórmula.
=ADDRESS(ROW(),COLUMN())
=ADDRESS(ROW(),COLUMN(),1)
=ADDRESS(ROW(),COLUMN(),2)
=ADDRESS(ROW(),COLUMN(),3)
=ADDRESS(ROW(),COLUMN(),4)