Teikuma gadījums programmā Excel - Excel padomi

Satura rādītājs

Neethu uzdeva šodienas jautājumu komentārā vietnē YouTube:

Vai makro var mainīt tekstu uz teikuma lietu programmā Excel?

Tas ir dīvaini: Excel zina UPPER, zemāku un Pareizāku, taču neatbalsta citus Word atbalstītos gadījumus: Sentence Case vai tOGGLE case.

Atlasīto teksta burtu var viegli mainīt programmā Microsoft Word, izmantojot iekšējo funkciju ar nosaukumu Mainīt reģistru.

Mainīt gadījuma komandu opcijas programmā Microsoft Word.

Jūs varat vienkārši noklikšķināt uz:

  • "Teikuma lieta", lai teikuma pirmo burtu lietotu ar lielo burtu un visus pārējos burtus atstātu kā mazos.
  • “mazie burti”, lai no teksta izslēgtu lielos burtus.
  • “Lielais burts”, lai visus burtus lietotu ar lielajiem burtiem.
  • “Lielo burtu lietojums katram vārdam”, lai katra vārda pirmais burts būtu lielais, bet pārējos burtus atstātu ar mazajiem burtiem.
  • "TOGGLE CASE", lai pārslēgtos starp diviem lietu skatiem.

Lai gan Excel nav teksta apstrādes programma, dažreiz jums, iespējams, būs jāmaina dotā teksta reģistrs. Lai nodrošinātu līdzīgu funkcionalitāti, ir trīs Excel funkcijas. Šīs funkcijas aizņem vienu argumentu un pārveido sniegtā teksta vai atsauces šūnas teksta vērtības gadījumu, kā paskaidrots turpmāk.

  1. LOWER() funkcija, lai izslēgtu lielos burtus.
  2. UPPER() funkcija lielo burtu lietošanai visos burtos.
  3. PROPER() funkcija lielo burtu lietošanai katra vārda sākumā.

Kaut arī šajā rakstā mēs neapspriedīsim opciju Tooggle Case, var būt nepieciešams izmantot teikuma gadījumu opciju programmā Excel, un to var daļēji panākt, apvienojot esošās funkcijas vienam teikumam, kā parādīts zemāk.

Atlasiet Lietu ieviešana ar Excel formulām.

Varat izmantot šādas funkciju kombinācijas, lai lietojumprogrammā Atlasīt gadījumu lietotu dotajam teikumam programmā Excel.

  1. Paņemiet norādītā teksta pirmo burtu, izmantojot funkciju LEFT (), un pārveidojiet to lielajiem burtiem, izmantojot funkciju UPPER ():

    =UPPER(LEFT(A1,1))

  2. Paņemiet pārējo tekstu, apvienojot funkcijas RIGHT () un LEN (), un pārveidojiet to mazajiem burtiem, izmantojot funkciju LOWER ():

    =LOWER(RIGHT(A1,LEN(A1)-1))

  3. Visbeidzot savienojiet šos divus rezultātus, izmantojot funkciju CONCAT ():

    =CONCAT(UPPER(LEFT(A1,1)),LOWER(RIGHT(A1,LEN(A1)-1)))

Tas pārveidos tekstu par teikuma lietu. To var arī pārbaudīt visam tekstam ar lielo burtu, kas parādīts A2 šūnā.

Ko darīt, ja šūnā ir vairāk nekā viens teikums, kuru vēlaties mainīt uz teikuma lietu?

Vairāki teikumi šūnā.

Viena iespēja to izdarīt varētu būt VBA izmantošana šīs transformācijas veikšanai.

SENTENCECASE() lietotāja definēta funkcija aizņem norādīto tekstu, apstrādā tekstu trim pieturzīmēm (punkts, jautājuma zīme un izsaukuma zīme), lai atrastu vairākus teikumus, ar lielo burtu lietotu katra teikuma burtu un atgrieztu rezultātu.

Function SENTENCECASE(txt As String) Dim resArr() As String Dim newArr1(), newArr2(), newArr3() As Variant ReDim resArr(0) resArr(0) = txt newArr1 = splitAndTransform(resArr(0), ".") If Not IsEmpty(newArr1) Then For Each par1 In newArr1 newArr2 = splitAndTransform(par1, "?") If Not IsEmpty(newArr2) Then For Each par2 In newArr2 newArr3 = splitAndTransform(par2, "!") If Not IsEmpty(newArr3) Then For Each par3 In newArr3 resArr(UBound(resArr)) = par3 ReDim Preserve resArr(UBound(resArr) + 1) Next par3 End If Next par2 End If Next par1 End If SENTENCECASE = Join(resArr, " ") End Function

SENTENCECASE()Funkcija izmanto palīga funkciju, kas tiek saukta, splitAndTransform()lai sadalītu teikumus un pārveidotu lietu ar norādīto atdalītāju. splitAndTransform()ir atkārtoti izmantojama VBA funkcija šajā projektā, tāpēc tā tiek rakstīta kā atsevišķa palīga funkcija.

Function splitAndTransform(text, delimiter) Dim tmpArr Dim newArr tmpArr = Split(text, delimiter) If UBound(tmpArr)>= 0 Then ReDim newArr(UBound(tmpArr)) For i = 0 To UBound(tmpArr) If tmpArr(i) "" Then newArr(i) = Trim(tmpArr(i)) newArr(i) = UCase(Left(newArr(i), 1)) & _ LCase(Right(newArr(i), Len(newArr(i)) - 1)) If Not isPuncMarked(newArr(i)) Then newArr(i) = newArr(i) & delimiter End If End If Next i Else ReDim newArr(0) End If splitAndTransform = newArr End Function

splitAndTransform()palīgs funkcija izmanto citu palīga funkciju, ko sauc, isPuncMarked()kas nosaka, vai norādītā teksta beigās ir pieturzīme. Pat ja moduļā tā netiek atkārtoti izmantota, funkcija isPuncMarked () atgriež Būla vērtību, un funkcija Zvanītāja attiecas tikai uz vērtību, kuru tā atgriež, bet gan uz to, kā tā darbojas. Vienmēr ir laba šī loģika nošķirt, lai nodrošinātu labāku lasāmību atkarīgās procedūrās.

Function isPuncMarked(sentence) As Boolean Dim rightMost As String rightMost = Right(sentence, 1) If rightMost = "." Or _ rightMost = "?" Or _ rightMost = "!" Then isPuncMarked = True Else isPuncMarked = False End If End Function

Lūk, rezultāts.

SENTENCECASE UDF rezultāts.

Ideālā gadījumā varētu būt laba ideja uzrakstīt procedūru, kas ņemtu izvēlēto diapazonu, un visu saturu aizstāt, izmantojot Sentence Case, nevis lietotāja definētu funkciju. To var izdarīt, projektam pievienojot šādu apakšprocedūru, kas izmantos masu un pastāvīgu pārveidošanu.

Sub doSentenceCase() Dim rng As Range Dim cll As Range Dim resArr() As String Dim newArr1(), newArr2(), newArr3() As Variant Set rng = Selection For Each cll In rng.Cells ReDim resArr(0) resArr(0) = cll.Value newArr1 = splitAndTransform(cll.Value, ".") If Not IsEmpty(newArr1) Then For Each par1 In newArr1 newArr2 = splitAndTransform(par1, "?") If Not IsEmpty(newArr2) Then For Each par2 In newArr2 newArr3 = splitAndTransform(par2, "!") If Not IsEmpty(newArr3) Then For Each par3 In newArr3 resArr(UBound(resArr)) = par3 ReDim Preserve resArr(UBound(resArr) + 1) Next par3 End If Next par2 End If Next par1 End If cll.Value = Join(resArr, " ") Next cll End Sub

Interesanti raksti...