Lauseketapa Excelissä - Excel-vinkit

Sisällysluettelo

Neethu esitti tämän päivän kysymyksen kommentissaan YouTubessa:

Voiko makro muuttaa tekstin lauseeksi Excelissä?

On outoa: Excel tuntee YLIMMÄN, alemman ja oikean, mutta se ei tue muita Wordin tukemia tapauksia: Lauseketapa tai tOGGLE-tapaus.

Valittua tekstikokoa voidaan helposti muuttaa Microsoft Wordissa käyttämällä sisäistä toimintoa nimeltä Change Case.

Muuta tapauksen komentoasetuksia Microsoft Wordissa.

Voit yksinkertaisesti napsauttaa:

  • "Lauseketapa" suuraakkoseksi lauseen ensimmäisen kirjaimen ja jättää kaikki muut kirjaimet pieniksi.
  • "pienet", jos haluat sulkea isot kirjaimet tekstistäsi.
  • "SUURI KIRJAIN" suuraakkoseksi kaikki kirjaimet.
  • "Isot kirjaimet jokaisessa sanassa" suuraakkosin jokaisen sanan alkukirjaimeksi ja jättää muut kirjaimet pieniksi.
  • "TOGGLE CASE" vaihtaaksesi kahden tapausnäkymän välillä.

Vaikka Excel ei ole tekstinkäsittelysovellus, joskus joudut ehkä joutumaan vaihtamaan annetun tekstin kirjainkokoa. Samanlaisia ​​toimintoja on kolme Excel-toimintoa. Nämä funktiot ottavat yhden argumentin ja muuttavat toimitetun tekstin tai viitatun solun teksti-arvon kirjainkoon alla kuvatulla tavalla.

  1. LOWER() toiminto sulkea pois isot kirjaimet.
  2. UPPER() -toiminto suurten kirjainten kirjoittamiseen isoilla kirjaimilla.
  3. PROPER() -toiminto suurten kirjainten käyttämiseen jokaisen sanan ensimmäisessä kirjaimessa.

Vaikka emme keskustelisi Tooggle Case -vaihtoehdosta tässä artikkelissa, Lauseke-vaihtoehto voi olla tarpeen käyttää Excelissä, ja tämä voidaan saavuttaa osittain yhdistämällä olemassa olevat toiminnot yhdeksi lauseeksi, kuten alla on esitetty.

Valitse Tapaustoteutus Excel-kaavoilla.

Voit käyttää seuraavia funktioyhdistelmiä valitaksesi tapauksen tiettyyn lauseeseen Excelissä.

  1. Ota annetun tekstin ensimmäinen kirjain LEFT () -toiminnolla ja muunna se isoksi UPPER () -toiminnolla:

    =UPPER(LEFT(A1,1))

  2. Ota loput tekstistä yhdistämällä OIKEA () ja LEN () -toiminnot yhdessä ja muunna se pieniksi kirjaimiksi LOWER () -toiminnon avulla:

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

  3. Liitä lopuksi nämä kaksi tulosta käyttämällä CONCAT () -toimintoa:

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

Tämä muuttaa tekstin lauseeksi. Voit myös testata tämän kaikilla isoilla kirjaimilla, jotka näkyvät A2-solussa.

Entä jos solussa on enemmän kuin yksi lause, jonka haluat muuttaa lauseeksi?

Useita lauseita solussa.

Yksi vaihtoehto tähän voisi olla VBA: n käyttäminen tämän muutoksen tekemiseen.

SENTENCECASE() käyttäjän määrittämä toiminto vie annetun tekstin, käsittelee kolme välimerkkiä (piste, kysymysmerkki ja huutomerkki) löytääksesi useita lauseita, isojen kirjainten käyttämistä jokaisen lauseen ensimmäisessä kirjaimessa ja tuloksen palauttamisen.

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()-funktio käyttää aputoimintoa, jota kutsutaan splitAndTransform()lauseiden jakamiseksi ja tapauksen muuntamiseksi annetulla erotimella. splitAndTransform()on uudelleenkäytettävä VBA-funktio tässä projektissa, joten se kirjoitetaan erillisenä auttajafunktiona.

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()helper-toiminto käyttää toista kutsuttua auttajafunktiota, isPuncMarked()joka määrittelee, onko annetun tekstin lopussa välimerkki. Vaikka sitä ei käytetä uudestaan ​​moduulissa, isPuncMarked () -funktio palauttaa loogisen arvon, ja soittajafunktio koskee vain sen palauttamaa arvoa, mutta miten se toimii. On aina hyvä käytäntö erottaa tämä logiikka myös paremman luettavuuden varmistamiseksi riippuvaisissa menettelyissä.

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

Tässä on tulos.

SENTENCECASE UDF -tulos.

Ihannetapauksessa saattaa olla hyvä kirjoittaa menettely, joka ottaa valitun alueen ja korvaa kaiken sisällön käyttämällä lauseentapausta käyttäjän määrittelemän toiminnon sijaan. Tämä voidaan tehdä lisäämällä seuraava alimenettely projektiin, joka soveltaa massaa ja pysyvää muunnosta.

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

Mielenkiintoisia artikkeleita...