Nosaukumu parsēšana VBA veidā

Vai jums kādreiz ir dota Excel darblapa ar nosaukumiem, kurā visi vārdi ir vienā šūnā? Jūsu uzdevums ir sadalīt vārdus vārdā un uzvārdos — šis process ir pazīstams kā parsēšana. Varat mēģināt izmantot formulu un/vai funkciju, lai palīdzētu, vai arī izmantot Visual Basic for Applications (VBA) kodu.

Izplatīta pieeja ir atrast atstarpi starp vārdu un uzvārdu, un voila! – jūs zināt, kur beidzas vārds un sākas uzvārds.

Ja vien jums nav vārdu, kuru struktūra ir sarežģītāka, piemēram, Dr. Viljams Dziednieks vai Zaks H. Šķaudītājs III.

Šeit ir tipiska VBA rutīna, kas izskata katru vārdu pēc rakstzīmes, līdz atrod atstarpi. Pēc tam tas ievieto visu, kas atrodas pa kreisi no atstarpes vienā kolonnā, un to, kas atrodas pa labi no atstarpes kolonnā pēc tam.

Dariet līdz ActiveCell = "
thename = ActiveCell.Value
Meklēšanai = 1 līdz Lenam (nosaukums)
 Ja Mid(nosaukums, izskats, 1) = " " Tad
    ActiveCell.Offset(0, 1) = pa kreisi (nosaukums, izskats - 1)
    ActiveCell.Offset(0, 2) = vidējais(nosaukums, izskats + 1)
    Iziet uz
 Beigas Ja
Nākamais
ActiveCell.Offset(1, 0).Aktivizēt
Cilpa

Šī rutīna ir noderīga, parsējot nosaukumus tikai ar vienu atstarpi, piemēram, Hārvijs Volbengers vai Toms Kolinss. Šajā tabulā ir parādīts koda palaišanas rezultāts nosaukumos, kuros ir vairāk nekā viena atstarpe:

Dr Viljams dziednieks Dr. Viljams dziednieks
Zaks H. Šķaudītājs III Zaks H. Šķaudītājs III

Šis nav labs parsēšanas mēģinājums. Tas izdevās lieliski, analizējot Hārviju Volbengeru un Tomu Kolinsa, bet ne tik labi citiem vārdiem.

Šeit ir izstrādāta tehnika, kas nodrošina labākus rezultātus. Ņemiet vērā, ka nosaukumu parsēšana nav ideāla, taču šādi rīkojoties, tiek panākts labāks darbs.

Paņēmiens ir saskaitīt, cik atstarpju ir pilnajā nosaukumā, un pēc tam sadalīt nosaukumu vienā no atstarpēm. Jo īpaši, ja ir trīs vai vairāk atstarpes, izmantojiet atstarpi divas collas no labās puses kā atstarpi; pretējā gadījumā izmantojiet galējo labo atstarpi kā pārtraukuma atstarpi.

Šis process tiek palaists VBA apakšprogrammā, kas izsauc funkciju, vienlaikus pārlūkojot nosaukumus. Atstarpju skaits tiek noteikts galvenās cilpas sākumā, un funkcija atgriež pozīciju, kurā atrodas pārtraukuma atstarpe.

Apakšparsēšanas_nosaukumi()
  Dim thename As String
  Blāvas atstarpes kā vesels skaitlis
  Dariet līdz ActiveCell = "
    thename = ActiveCell.Value
    atstarpes = 0
    Pārbaudei = 1 līdz Len (nosaukums)
      Ja Mid(nosaukums, tests, 1) = " " Tad
      atstarpes = atstarpes + 1
    Beigas Ja
  Nākamais
  Ja atstarpes >= 3 Tad
    break_space_position = space_position(" ", nosaukums, atstarpes - 1)
  Citādi
    break_space_position = space_position(" ", nosaukums, atstarpes)
  Beigas Ja
  Ja atstarpes > 0 Tad
    ActiveCell.Offset(0, 1) = pa kreisi (nosaukums, pārtraukuma_atstarpes_pozīcija — 1)
    ActiveCell.Offset(0, 2) = vidējais(nosaukums, pārtraukuma_atstarpes_pozīcija + 1)
  Citādi
    Tas ir paredzēts, ja pilnais vārds ir tikai viens vārds bez atstarpēm
    ActiveCell.Offset(0, 1) = nosaukums
  Beigas Ja
  ActiveCell.Offset(1, 0).Aktivizēt
  Cilpa
Beigu apakš
Funkcija space_position(what_to_look_for As String, what_to_look_in As String, space_count As Integer) Kā vesels skaitlis
  Dim loop_counter kā vesels skaitlis
    telpa_pozīcija = 0
    For loop_counter = 1 Līdz atstarpes_skaitam
      space_position = InStr(cilpas_skaitītājs + atstarpes_pozīcija, kas_jāskatās, ko_meklēt)
      Ja atstarpes_pozīcija = 0, tad Exit For
    Nākamais
Beigu funkcija

Nākamajā tabulā parādīts, kā tagad izskatās rezultāts:

Dr Viljams dziednieks Dr Viljams Dziednieks
Zaks H. Šķaudītājs III Zaks H. Šķaudītājs III

Vārdu parsēšana ir tikpat māksla kā tehnisks process. Šajā otrajā piemērā visi vārdi un uzvārdi ir norādīti pareizajās kolonnās. Ja tiktu ieviests jauns garais nosaukums ar piecām vai vairāk atstarpēm, rutīnas parsēšana var būt nepareiza, un VBA kodam būs jāveic papildu nosacījuma pārbaude. Taču šis piemērs tagad ir uz pareizā ceļa kā rūpnieciski vērtīga nosaukumu parsēšanas rutīna.


Kā neļaut Microsoft Word atvērt failus tikai lasīšanas režīmā operētājsistēmā Windows

Kā neļaut Microsoft Word atvērt failus tikai lasīšanas režīmā operētājsistēmā Windows

Kā neļaut Microsoft Word atvērt failus tikai lasīšanas režīmā operētājsistēmā Windows Microsoft Word atver failus tikai lasīšanas režīmā, padarot tos neiespējamu rediģēt? Neuztraucieties, metodes ir norādītas zemāk

Kā novērst nepareizu Microsoft Word dokumentu drukāšanu

Kā novērst nepareizu Microsoft Word dokumentu drukāšanu

Kā labot kļūdas, drukājot nepareizus Microsoft Word dokumentus.Kļūdas Word dokumentu drukāšanā ar mainītiem fontiem, nekārtīgām rindkopām, trūkstoša teksta vai pazaudētu saturu ir diezgan izplatītas. Tomēr nevajag

Izdzēsiet pildspalvas un marķiera zīmējumus savos PowerPoint slaidos

Izdzēsiet pildspalvas un marķiera zīmējumus savos PowerPoint slaidos

Ja prezentācijas laikā esat izmantojis pildspalvu vai marķieri, lai zīmētu uz PowerPoint slaidiem, varat saglabāt zīmējumus nākamajai prezentācijai vai izdzēst tos, lai nākamajā reizē, kad to parādīsit, jūs sāktu ar tīriem PowerPoint slaidiem. Izpildiet šos norādījumus, lai dzēstu pildspalvas un marķiera zīmējumus: Līniju dzēšana pa vienai […]

Veidojiet bibliotēkas saturu programmā SharePoint 2010

Veidojiet bibliotēkas saturu programmā SharePoint 2010

Stilu bibliotēkā ir CSS faili, paplašināmās stila lapu valodas (XSL) faili un attēli, ko izmanto iepriekš definētas šablona lapas, lapu izkārtojumi un vadīklas programmā SharePoint 2010. Lai atrastu CSS failus publicēšanas vietnes stilu bibliotēkā: izvēlieties Vietnes darbības → Skatīt Viss vietnes saturs. Tiek parādīts vietnes saturs. Stila bibliotēka atrodas […]

Formatējiet skaitļus tūkstošos un miljonos Excel pārskatos

Formatējiet skaitļus tūkstošos un miljonos Excel pārskatos

Nepārsedziet savu auditoriju ar milzīgiem skaitļiem. Programmā Microsoft Excel varat uzlabot informācijas paneļu un pārskatu lasāmību, formatējot skaitļus tā, lai tie tiktu rādīti tūkstošos vai miljonos.

Kā koplietot un sekot līdzi SharePoint vietnēm

Kā koplietot un sekot līdzi SharePoint vietnēm

Uzziniet, kā izmantot SharePoints sociālo tīklu rīkus, kas ļauj indivīdiem un grupām sazināties, sadarboties, koplietot un sazināties.

Kā programmā Excel konvertēt datumus Juliana formātos

Kā programmā Excel konvertēt datumus Juliana formātos

Jūlija datumi ražošanas vidēs bieži tiek izmantoti kā laikspiedols un ātra atsauce partijas numuram. Šāda veida datuma kodēšana ļauj mazumtirgotājiem, patērētājiem un pakalpojumu aģentiem noteikt produkta izgatavošanas laiku un līdz ar to arī produkta vecumu. Jūlija datumi tiek izmantoti arī programmēšanā, militārajā jomā un astronomijā. Savādāk […]

Kā izveidot Access Web App

Kā izveidot Access Web App

Programmā Access 2016 varat izveidot tīmekļa lietotni. Kas tad vispār ir tīmekļa lietotne? Tīmeklis nozīmē, ka tas ir tiešsaistē, un lietotne ir tikai “lietojumprogrammas” saīsinājums. Pielāgota tīmekļa lietotne ir tiešsaistes datu bāzes lietojumprogramma, kurai var piekļūt no mākoņa, izmantojot pārlūkprogrammu. Jūs veidojat un uzturat tīmekļa lietotni darbvirsmas versijā […]

Ātrās palaišanas josla programmā SharePoint 2010

Ātrās palaišanas josla programmā SharePoint 2010

Lielākā daļa SharePoint 2010 lapu ātrās palaišanas joslā lapas kreisajā pusē parāda navigācijas saišu sarakstu. Ātrās palaišanas joslā tiek rādītas saites uz piedāvāto vietņu saturu, piemēram, sarakstiem, bibliotēkām, vietnēm un publicēšanas lapām. Ātrās palaišanas joslā ir divas ļoti svarīgas saites: Visa vietnes satura saite: […]

Ko nozīmē risinātāja kļūdu ziņojumi programmā Excel?

Ko nozīmē risinātāja kļūdu ziņojumi programmā Excel?

Vienkāršām problēmām risinātājs programmā Excel parasti ātri atrod optimālās Risinātāja mainīgā vērtības mērķa funkcijai. Taču dažos gadījumos Solver ir grūti atrast Solver mainīgā vērtības, kas optimizē mērķa funkciju. Šādos gadījumos Solver parasti parāda ziņojumu vai kļūdas ziņojumu, kurā aprakstīta vai apspriesta problēma, ko […]