Ich habe ein Problem beim Ersetzen des letzten Zeichens in der Excel-Tabelle.
Zum Beispiel
input1: 34553CHP01A , input2: C
output: 34553CHP01A
34553CHP01B
34553CHP01C
input: columnA,columnB, output: columnC
ich muss auf diese Weise mehrere Zeilen ersetzen.
Bitte helfen Sie mir. Danke.....
Antwort1
Versuchen Sie diesBenutzerdefinierte FunktionCode in einem standardmäßigen öffentlichen Modulcodeblatt und verwenden Sie ihn dann wie jede native Excel-Funktion im Arbeitsblatt.
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
Antwort2
Wenn man TEXTJOIN hat, kann man Folgendes verwenden:
=TEXTJOIN(" ",,LEFT(A2,LEN(A2)-1)&CHAR(ROW(INDEX($ZZ:$ZZ,CODE(RIGHT(A2))):INDEX($ZZ:$ZZ,CODE(B2)))))
Abhängig von der jeweiligen Excel-Version muss dies beim Verlassen des Bearbeitungsmodus möglicherweise mit Strg-Umschalt-Eingabe statt mit der Eingabetaste bestätigt werden.
Möchte man die Werte untereinander in der gleichen Zelle haben, dann ändert man das " "
inCHAR(10)
Wenn sie in separaten Zellen untereinander stehen sollen und eine der dynamischen Arrayformeln hat, fügen Sie einfach Folgendes in die oberste Zelle ein:
=LEFT(A2,LEN(A2)-1)&CHAR(ROW(INDEX($ZZ:$ZZ,CODE(RIGHT(A2))):INDEX($ZZ:$ZZ,CODE(B2))))
Und Excel wird ausfallen.
Wenn nicht und der Benutzer es nach unten ausfüllen möchte, fügen Sie Folgendes in die erste Zelle ein und kopieren/ziehen Sie es nach unten:
=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),"")