Tengo un problema al reemplazar el último carácter en una hoja de Excel.
Por ejemplo
input1: 34553CHP01A , input2: C
output: 34553CHP01A
34553CHP01B
34553CHP01C
input: columnA,columnB, output: columnC
Tengo que reemplazar varias filas como esta.
por favor ayúdame. gracias.....
Respuesta1
prueba a poner estoFunción definida por el usuariocódigo en una hoja de códigos de módulo público estándar y luego úselo como lo haría con cualquier función nativa de Excel en la hoja de trabajo.
Option Explicit
Function EXPAND_PARTNO(pno As String, n As String, _
Optional delim As String = " ")
Dim m As String, i As Long, pnos As Variant
pno = Trim(pno)
m = Right(pno, 1)
pno = Left(pno, Len(pno) - 1)
ReDim pnos(Asc(m) To Asc(n))
For i = Asc(m) To Asc(n)
pnos(i) = pno & Chr(i)
Next i
EXPAND_PARTNO = Join(pnos, delim)
End Function
Respuesta2
Si uno tiene TEXTJOIN, entonces puede usar:
=TEXTJOIN(" ",,LEFT(A2,LEN(A2)-1)&CHAR(ROW(INDEX($ZZ:$ZZ,CODE(RIGHT(A2))):INDEX($ZZ:$ZZ,CODE(B2)))))
Dependiendo de la versión de Excel, es posible que sea necesario confirmar esto con Ctrl-Shift-Enter en lugar de Enter al salir del modo de edición.
Si uno quiere que los valores estén uno debajo del otro en la misma celda, cambie " "
aCHAR(10)
Si van a estar en celdas separadas, una debajo de la otra, y una tiene las fórmulas de matriz dinámica, simplemente coloque esto en la celda superior:
=LEFT(A2,LEN(A2)-1)&CHAR(ROW(INDEX($ZZ:$ZZ,CODE(RIGHT(A2))):INDEX($ZZ:$ZZ,CODE(B2))))
Y Excel se derrumbará.
Si no es así y el usuario quiere completarlo, coloque esto en la primera celda y copie/arrástrelo hacia abajo:
=IF(ROW(INDEX($ZY:$ZY,CODE(RIGHT($A$2))))+ROW($A1)-1<=ROW(INDEX($ZY:$ZY,CODE($B$2))), LEFT($A$2,LEN($A$2)-1)&CHAR(ROW(INDEX($ZY:$ZY,CODE(RIGHT($A$2))))+ROW($A1)-1),"")