Kā iegūt tekstu un ciparus apgrieztā veidā, izmantojot VBA programmā Microsoft Excel

Anonim

Programmā Excel ir gadījumi, kad vēlamies pilnībā mainīt tekstu vai to secību ar VBA kodu. Var būt dažādas prasības, piemēram, apgrieztā šūnu satura iegūšana, apgrieztā šūnu secība utt.

Šajā rakstā mēs uzzināsim sekojošo:

  • Kā iegūt apgriezto šūnu saturu?
  • Kā no šūnas iegūt visus vārdus apgrieztā secībā?
  • Kā mainīt kolonnu secību?
  • Kā apgrieztos ciparus iegūt tikai no teksta?
  • Kā mainīt aktīvās šūnas šūnu saturu?

Kā iegūt apgriezto šūnu saturu?

Programmā Excel ir prasība mainīt tekstu vai ciparus šūnās, piem. “Angļu” līdz “hsilgne”

Tālāk ir sniegts datu momentuzņēmums pirms izvades:

Tālāk ir sniegta vajadzīgās izvades momentuzņēmums B slejā:

Lai iegūtu iepriekš minēto izvadi, mums ir jāveic šādas darbības, lai palaistu VB redaktoru

  • Noklikšķiniet uz cilnes Izstrādātājs
  • Kodu grupā atlasiet Visual Basic

  • Nokopējiet zemāk esošo kodu standarta modulī
 Funkcija CompleteReverse (rCell As Range, pēc izvēles IsText kā Būla) Dim i Kā vesels skaitlis Dim StrNewTxt Kā virkne Dim strOld As String strOld = Apgriezt (rCell) Attiecībā uz i = 1 līdz Len (strOld) StrNewTxt = Mid (strOld, i, 1) & StrNewTxt Nākamais i If IsText = False then CompleteReverse = CLng (StrNewTxt) Else CompleteReverse = StrNewTxt End If End Function 

  • B1 šūnā formula būs
  • = CompleteReverse (A1, TRUE)

Kā no šūnas iegūt visus vārdus apgrieztā secībā?

Mums būs pāris kodi, lai atrastu risinājumu. Lai visus vārdus iegūtu apgrieztā secībā, mēs modulī nokopēsim un ielīmēsim šādu kodu

 Funkcija ReverseOrder1 (Rng kā diapazons) Dim Val kā variants, skaitītājs kā vesels skaitlis, R () kā variants Val = Split (Application.WorksheetFunction.Substitute (Rng.Value, "", ""), ",") ReDim R (LBound (Val) uz UBound (Val)) Skaitītājam = LBound (Val) Līdz UBound (Val) R (UBound (Val) - Skaitītājs) = Val (skaitītājs) Nākamais skaitītājs ReverseOrder1 = Pievienoties (R, ",") beigu funkcija 

  • Šūnā C1 formula būs
  • = ReverseOrder1 (A1)

Apskatīsim otro VBA kodu:

 Funkcija ReverseOrder2 (Rng kā diapazons) Kā virkņu dim skaitītājs tik garš, R () kā virkne, temp kā virkne R = sadalīta (aizstāt (Rng.Value2, "", ""), ",") skaitītājam = LBound (R ) Uz (UBound (R) - 1) \ 2 temp = R (UBound (R) - skaitītājs) R (UBound (R) - skaitītājs) = R (skaitītājs) R (skaitītājs) = temp Nākamais skaitītājs ReverseOrder2 = Pievienoties (R , ",") Beigu funkcija 

  • Šūnā D1 formula būs
  • = ReverseOrder2 (A1)

Kā mainīt kolonnu secību?

Ja jums ir jāmaina slejas datu secība, jums vajadzētu sīkāk aplūkot tālāk norādīto kodu.

 Sub ReverseColumnOrder () Dim wBase kā darblapa, wResult kā darblapa, i tik ilgi, x kā garš iestatīt wBase = Sheets ("Sheet1") Set wResult = Sheets ("Sheet2") Application.ScreenUpdating = False Ar wBase For i = .Range ("A1"). CurrentRegion.Rows.Count To 1 Step -1 x = x + 1. Range ("A1"). CurrentRegion.Rows (i). Copy wResult.Range ("A" & x) Next i End Ar Application.ScreenUpdating = True End Sub 

Iepriekš minētais kods pārbaudīs datus 1. lapas A slejā un pēc tam mainīs secību 2. lapā. Skatiet zemāk redzamo attēlu

Kā iegūt apgrieztus ciparus tikai no teksta?

Piemērs: “Excel (123) padoms” ir šūnas saturs

Nepieciešama izvade: “Excel (321) tip”

Programmā Excel var būt vairāki veidi, kā iegūt tādu pašu rezultātu, un tas pats attiecas uz risinājuma meklēšanu, izmantojot VBA UDF. Šajā piemērā mēs parādīsim 5 dažādus veidus.

Kopējiet un ielīmējiet šādus kodus standarta modulī:

 Funkcija ReverseNumber1 (v kā variants) Kā virkne Dim iSt kā vesels skaitlis, iEnd kā vesels skaitlis, sNum kā virkne, sTemp kā virkne iSt = InStr (v, "(") iEnd = InStr (v, ")") Ja iSt = 0 vai iEnd = 0 Tad ReverseNumber1 = v: Iziet no funkcijas sNum = Mid (v, iSt + 1, iEnd - iSt - 1) Attiecībā uz i = Len (sNum) līdz 1 solim -1 sTemp = sTemp & Mid (sNum, i, 1) Nākamais i ReverseNumber1 = Pa kreisi (v, iSt) & sTemp & Mid (v, iEnd, 5 5) Beigu funkcijas funkcija ReverseNumber2 (s kā virkne) Kā virkne Dim i &, t $, ln & t = s: ln = InStr (s , ")") - 1 Attiecībā uz i = InStr (s, "(") + 1 uz InStr (s, ")") - 1 Mid (t, i, 1) = Mid (s, ln, 1) ln = ln - 1 Nākamais ReverseNumber2 = t Beigu funkcijas funkcija ReverseNumber3 (c00) c01 = Split (Split (c00, ")") (0), "(") (1) ReverseNumber3 = Replace (c00, "(" & c01 & " ) "," ("& StrReverse (c01) &") ") Beigu funkcijas funkcija ReverseNumber4 (c00) ReverseNumber4 = Pa kreisi (c00, InStr (c00," (")) & StrReverse (Mid (Pa kreisi (c00, _ InStr ( c00, ")") - 1), InStr (c00, "(") + 1)) un vidus (c00, InStr (c00, ")")) beigu funkcija Funkcija ReverseNumber5 (s kā virkne) ) Dim m kā objekts ar CreateObject ("VBScript.Regexp") .Global = True .Pattern = "(\ D*) (\ d*)" Par katru m In .Execute (s) ReverseNumber5 = ReverseNumber5 & m.submatches ( 0) & StrReverse (m.saskaņas (1)) Nākamais beigas ar kopu m = nekas beigu funkcija 

  • Šūnā B2 formula būs
  • = Reversskaitlis1 (A2)

Pārējos 4 kodus mēs varam pārbaudīt ar šādu formulu:

1. = Reversskaitlis2 (A2)

2. = Reversskaitlis3 (A2)

3. = Reversskaitlis4 (A2)

4. = apgrieztais skaitlis5 (A2)

Visi iepriekš minētie 5 makro kodi nodrošinās tādu pašu izvadi; tomēr; var pieņemt kodu, kas viņiem ir visērtākais.

Kā mainīt aktīvās šūnas šūnu saturu?

Ja vēlaties, lai makro darbotos tikai aktīvajā šūnā un pēc tam mainītu saturu. Šis kods nedarbosies šūnā, kurā ir formula.

Mēs izmantosim šādu kodu:

 Sub Reverse_Cell_Contents () 'šis makro darbosies tikai aktīvajā šūnā' --- Komentēt, ja nav ActiveCell.HasFormula Tad sRaw = ActiveCell.Text sNew = "" Attiecībā uz j = 1 Līdz Len (sRaw) sNew = Mid (sRaw, j, 1) ) + sJauns Nākamais j ActiveCell.Value = sJauna beigas Ja beigas Apakš 

Ja kursors atrodas šūnā A1, kurā ir “exceltip”, tad iepriekš minētais makro to pārvērš par “pitlecxe”.

Secinājums: Mums var būt tik daudz UDF vienam risinājumam programmā Microsoft Excel. Šis UDF darbosies no 2003. gada versijas līdz 2013. gadam.

Ja jums patika mūsu emuāri, kopīgojiet to ar saviem draugiem Facebook. Un arī jūs varat sekot mums Twitter un Facebook.

Mēs labprāt uzklausītu jūsu viedokli, dariet mums zināmu, kā mēs varam uzlabot, papildināt vai ieviest jauninājumus mūsu darbā un uzlabot to jūsu labā. Rakstiet mums uz e -pasta vietne