Onko sinulle koskaan annettu Excel-laskentataulukkoa, jossa on nimet, joissa kaikki nimet ovat yhdessä solussa? Sinun tehtäväsi on jakaa nimet etunimeksi ja sukunimeksi - prosessi, joka tunnetaan jäsentämisenä. Voit kokeilla apuna kaavaa ja/tai funktiota tai Visual Basic for Applications (VBA) -koodia.
Yleinen lähestymistapa on löytää väli etunimen ja sukunimen väliltä, ja voila! – tiedät mihin etunimi päättyy ja sukunimi alkaa.
Ellei sinulla ole rakenteeltaan monimutkaisempia nimiä, kuten Dr. William Healer tai Zak H. Sneezer III.
Tässä on tyypillinen VBA-rutiini, joka etsii jokaista nimeä merkki kerrallaan, kunnes se löytää välilyönnin. Sitten se sijoittaa sen, mikä on tilan vasemmalla puolella yhteen sarakkeeseen ja sen, mikä on sen jälkeen sarakkeen oikealle puolelle.
Tee ActiveCell asti = "
thename = ActiveCell.Value
Etsiminen = 1 Len(nimi)
Jos Mid(nimi, näköinen, 1) = " " Sitten
ActiveCell.Offset(0, 1) = Vasen(nimi, katse - 1)
ActiveCell.Offset(0, 2) = Mid(nimi, ulkoasu + 1)
Poistu For
Loppu Jos
Seuraava
ActiveCell.Offset(1, 0).Aktivoi
Silmukka
Tämä rutiini on hyödyllinen jäsennettäessä nimiä vain yhdellä välilyönnillä, kuten Harvey Wallbanger tai Tom Collins. Seuraava taulukko näyttää tuloksen koodin suorittamisesta nimissä, joissa on useampi kuin yksi välilyönti:
Tri William Healer |
DR. |
William Healer |
Zak H. Sneezer III |
Zak |
H. Sneezer III |
Tämä ei ole hyvä jäsennysyritys. Se toimi hyvin Harvey Wallbangerin ja Tom Collinsin jäsentämiseen, mutta ei niin hyvin muille nimille.
Tässä on kehitetty tekniikka, joka palauttaa parempia tuloksia. Muista, että nimien jäsentäminen ei ole täydellistä, mutta tällä tavalla toimiminen toimii paremmin.
Tekniikka on laskea kuinka monta välilyöntiä on koko nimessä, ja sitten pilkkoa nimi yhdestä välilyönnistä. Erityisesti, jos välilyöntejä on kolme tai useampia, käytä katkaisuvälinä kahden tuuman väliä oikealta; muussa tapauksessa käytä oikeanpuoleista tilaa jakovälinä.
Tämä prosessi suoritetaan VBA-alirutiinissa, joka kutsuu funktiota samalla kun silmukkaa nimiä. Välilyöntien määrä määritetään varhaisessa pääsilmukassa ja funktio palauttaa paikan, jossa katkaisuväli on.
Alajäsennys_nimet()
Himmeä nimi As String
Himmeä välilyönnit Kokonaislukuna
Tee ActiveCell asti = "
thename = ActiveCell.Value
välilyönnit = 0
Testissä = 1 Len(nimi)
Jos Mid(nimi, testi, 1) = " " Sitten
välilyönnit = välilyönnit + 1
Loppu Jos
Seuraava
Jos välilyönnit >= 3 Sitten
break_space_position = space_position(" ", nimi, välilyönnit - 1)
Muu
break_space_position = space_position(" ", nimi, välilyönnit)
Loppu Jos
Jos välilyönnit > 0 Sitten
ActiveCell.Offset(0, 1) = Vasen(nimi, break_space_position - 1)
ActiveCell.Offset(0, 2) = Keski(nimi, break_space_position + 1)
Muu
Tämä on tarkoitettu silloin, kun koko nimi on vain yksi nimi ilman välilyöntejä
ActiveCell.Offset(0, 1) = nimi
Loppu Jos
ActiveCell.Offset(1, 0).Aktivoi
Silmukka
Lopeta ala
Funktio space_position(mitä_haetaan_merkkijonona, mitä_katsotaan_merkkijonona, space_count kokonaislukuna) Kokonaislukuna
Dim loop_counter Kokonaislukuna
space_position = 0
For loop_counter = 1 To space_count
space_position = InStr(silmukan_laskuri + tila_sijainti, mitä_katso, mitä_haetaan)
Jos space_position = 0, sitten Exit For
Seuraava
Lopeta toiminto
Seuraava taulukko näyttää, miltä tulos näyttää nyt:
Tri William Healer |
Tohtori William |
Parantaja |
Zak H. Sneezer III |
Zak H. |
Aivastaja III |
Nimen jäsentäminen on yhtä paljon taidetta kuin tekninen prosessi. Tässä toisessa esimerkissä kaikki etu- ja sukunimet ovat oikeissa sarakkeissa. Jos käyttöön otettaisiin uusi pitkä nimi, jossa on vähintään viisi välilyöntiä, rutiini saattaa saada jäsennyksen väärin, ja VBA-koodi vaatisi enemmän ehdollista testausta. Mutta tämä esimerkki on nyt oikealla tiellä teollisena nimen jäsennysrutiinina.