I excel er det tider når vi ønsker å få teksten reversert helt eller deres rekkefølge med VBA -kode. Det kan være forskjellige krav, som å trekke ut omvendt celleinnhold, omvendt cellerekkefølge og så videre.
I denne artikkelen lærer vi følgende:
- Hvordan få omvendt celleinnhold?
- Hvordan få alle ord i omvendt rekkefølge fra en celle?
- Hvordan reversere kolonne rekkefølge?
- Hvordan få omvendte tall bare fra tekst?
- Hvordan reversere celleinnholdet i activecell?
Hvordan få omvendt celleinnhold?
I Excel er det krav om å reversere teksten eller tallene i celler, f.eks. “Engelsk” til “hsilgne”
Følgende er øyeblikksbildet av data før utdata:
Følgende er øyeblikksbildet av krever utdata i kolonne B:
For å få utdataene ovenfor, må vi følge trinnene nedenfor for å starte VB -editor
- Klikk på kategorien Utvikler
- Velg Visual Basic fra kodegruppen
- Kopier koden nedenfor i standardmodulen
Funksjon CompleteReverse (rCell As Range, Valgfri IsText As Boolean) Dim i As Integer Dim StrNewTxt As String Dim strOld As String strOld = Trim (rCell) For i = 1 To Len (strOld) StrNewTxt = Mid (strOld, i, 1) & StrNewTxt Neste i If IsText = False Then CompleteReverse = CLng (StrNewTxt) Else CompleteReverse = StrNewTxt End If End Funksjon
- I celle B1 vil formelen være
- = CompleteReverse (A1, TRUE)
Hvordan få alle ordene i omvendt rekkefølge fra en celle?
Vi vil ha noen koder for å finne løsningen. For å få alle ordene i fullstendig omvendt rekkefølge, vil vi kopiere og lime inn følgende kode i modulen
Funksjon ReverseOrder1 (Rng As Range) Dim Val As Variant, Counter As Integer, R () As Variant Val = Split (Application.WorksheetFunction.Substitute (Rng.Value, "", ""), ",") ReDim R (LBound (Val) Til UBound (Val)) For Counter = LBound (Val) To UBound (Val) R (UBound (Val) - Counter) = Val (Counter) Next Counter ReverseOrder1 = Join (R, ",") End Function
- I celle C1 vil formelen være
- = ReverseOrder1 (A1)
La oss se på den andre VBA -koden:
Funksjon ReverseOrder2 (Rng As Range) As String Dim Counter As Long, R () As String, temp As String R = Split (Replace (Rng.Value2, "", ""), ",") For Counter = LBound (R ) Til (UBound (R) - 1) \ 2 temp = R (UBound (R) - Counter) R (UBound (R) - Counter) = R (Counter) R (Counter) = temp Next Counter ReverseOrder2 = Join (R) , ",") Sluttfunksjon
- I celle D1 vil formelen være
- = ReverseOrder2 (A1)
Hvordan reversere kolonne rekkefølge?
Hvis du har et krav om å reversere rekkefølgen på kolonnedata, bør du se nærmere på koden nedenfor:
Sub ReverseColumnOrder () Dim wBase As Worksheet, wResult As Worksheet, i As Long, x As Long Set wBase = Sheets ("Sheet1") Set wResult = Sheets ("Sheet2") Application.ScreenUpdating = False With wBase For i = .Range ("A1"). CurrentRegion.Rows.Count til 1 trinn -1 x = x + 1 .Range ("A1"). CurrentRegion.Rows (i) .Copy wResult.Range ("A" & x) Neste i slutt Med Application.ScreenUpdating = True End Sub
Koden ovenfor vil kontrollere dataene i kolonne A i ark1 og deretter reversere rekkefølgen i ark 2. Se bildet nedenfor
Hvordan få omvendte tall bare fra tekst?
Eksempel: "excel (123) tip" er celleinnholdet
Krev utdata: "excel (321) tips"
I excel kan det være flere måter å få samme output, og det samme gjelder for å finne løsning med VBA UDF. For dette eksemplet vil vi vise fem forskjellige måter.
Kopier og lim inn følgende koder i standardmodulen:
Funksjon ReverseNumber1 (v Som Variant) Som String Dim iSt As Integer, iEnd As Integer, sNum As String, sTemp As String iSt = InStr (v, "(") iEnd = InStr (v, ")") If iSt = 0 Or iEnd = 0 Deretter ReverseNumber1 = v: Avslutt funksjon sNum = Mid (v, iSt + 1, iEnd - iSt - 1) For i = Len (sNum) Til 1 Trinn -1 sTemp = sTemp & Mid (sNum, i, 1) Neste i ReverseNumber1 = Venstre (v, iSt) & sTemp & Mid (v, iEnd, 5 5) Sluttfunksjon Funksjon ReverseNumber2 (s som streng) Som streng Dim i &, t $, ln & t = s: ln = InStr (s , ")") - 1 For i = InStr (s, "(") + 1 Til InStr (s, ")") - 1 Mid (t, i, 1) = Mid (s, ln, 1) ln = ln - 1 Neste ReverseNumber2 = t Sluttfunksjon Funksjon ReverseNumber3 (c00) c01 = Split (Split (c00, ")") (0), "(") (1) ReverseNumber3 = Erstatt (c00, "(" & c01 & " ) "," ("& StrReverse (c01) &") ") Sluttfunksjon Funksjon ReverseNumber4 (c00) ReverseNumber4 = Venstre (c00, InStr (c00," (")) & StrReverse (Midt (Venstre (c00, _ InStr ( c00, ")") - 1), InStr (c00, "(") + 1)) & Mid (c00, InStr (c00, ")")) Sluttfunksjon Funksjon ReverseNumber5 (s som streng ) Dim m som objekt med CreateObject ("VBScript.Regexp") .Global = True .Pattern = "(\ D*) (\ d*)" For hver m i .Execute (s) ReverseNumber5 = ReverseNumber5 & m.submatches ( 0) & StrReverse (m.submatches (1)) Neste slutt med sett m = ingenting sluttfunksjon
- I celle B2 vil formelen være
- = ReverseNumber1 (A2)
Vi kan teste de fire andre kodene med følgende formel:
1. = ReverseNumber2 (A2)
2. = ReverseNumber3 (A2)
3. = ReverseNumber4 (A2)
4. = ReverseNumber5 (A2)
Alle de ovennevnte 5 makrokodene gir samme utgang; derimot; man kan adoptere koden de er mest komfortable med.
Hvordan reversere celleinnholdet i activecell?
Hvis du vil at en makro bare skal kjøre på activecell og deretter reversere innholdet. Denne koden vil ikke kjøre på cellen som inneholder formel.
Vi bruker følgende kode:
Sub Reverse_Cell_Contents () 'denne makroen vil bare kjøre på activecell' --- Kommentar If Not ActiveCell.HasFormula Then sRaw = ActiveCell.Text sNew = "" For j = 1 To Len (sRaw) sNew = Mid (sRaw, j, 1 ) + sNyhet Neste j ActiveCell.Value = sNy End If End Sub
Hvis markøren er på celle A1, som inneholder "exceltip", vil makroen ovenfor konvertere den til "pitlecxe".
Konklusjon: Vi kan ha så mange UDF -er for en enkelt løsning i Microsoft Excel. Denne UDF vil fungere fra 2003 -versjonen til 2013.
Hvis du likte bloggene våre, del den med vennene dine på Facebook. Og du kan også følge oss på Twitter og Facebook.
Vi vil gjerne høre fra deg, gi oss beskjed om hvordan vi kan forbedre, utfylle eller innovere arbeidet vårt og gjøre det bedre for deg. Skriv oss på e -post nettsted