Kui puutute kokku olukorraga, kus vajate lahtri igas reas ainult esimest sõna, mitte kogu tähemärki, siis peate seda artiklit lugema. Järgmine õpetus aitab teil Excelis VBA -koodi kaudu hankida ainult esimest sõna.
Selles artiklis keskendume sellele, kuidas hoida esimest sõna ainult lahtri igas reas, mis on eraldatud semikooloniga makrokoodide kaudu.
Küsimus: Andmetel, millega töötan, on mõnikord igas lahtris mitu rida ja ma tahan välja võtta ainult esimese sõna.
Originaalse küsimuse leiate siit
Allpool on sisendteksti ülevaade (enne lehte)
Järgnev on sisendteksti (pärast lehte) ülevaade veerus A & nõuab väljundit veerus B; vaadake allolevat pilti:
Koodi saamiseks; VB redaktori käivitamiseks peame järgima alltoodud samme
- Klõpsake vahekaarti Arendaja
- Valige koodirühmas Visual Basic
- Kopeerige allolev kood standardmoodulisse
Funktsioon Esimene sõna (0 loendamiseks) i = 0 loendamiseks, kui i = 0, siis Arr (i) = vasak (rng, InStr (1, rng, "") - 1) muidu j = 0 Siis j = InStr (1, rng, Chr (10)) Arr (i) = Mid (rng, j + 1, InStr (j, rng, "") - j) Muu j = InStr (j + 1, rng, Chr (10)) Arr (i) = Mid (rng, j + 1, InStr (j, rng, "") - j) End If Next FirstWordOnly = Liitu (Arr, ";") muidu Kui InStr (1, rng, "")> 0 Siis FirstWordOnly = Vasakule (rng, InStr (1, rng, "")) Else FirstWordOnly = rng End If End Kui End Funktsioon
Nüüd on VBA kood kasutamiseks valmis; me kasutame enne lehte äsja loodud kasutaja määratud funktsiooni, st "FirstWordOnly".
- Väljundi saamiseks lahtris B2 UDF abil on valem järgmine
- = FirstWordOnly (A2)
Koodi selgitus:
Ülaltoodud koodis oleme kasutanud funktsioone COUNT, LEN, REPLACE, IF, INSTR, MID, CHR, LEFT, JOIN VBA.
- ‘Len (rng)’; see kontrollib lahtri pikkust, millele me viitame
- 'Asenda (rng, Chr (10), "")'; Kood kontrollib Chr (10), st reavahet igal real ja asendatakse seejärel kahekordse jutumärgiga (mitte midagi)
- ‘Krahv = Len (rng) - Len (Asenda (rng, Chr (10)," ")) '; Count salvestab iga rea pikkuse erinevuse pärast reavahe asendamist
- Kui loend> 0; see kontrollib, kas loenduse pikkus on suurem kui null ja kui see leitakse võrdseks nulliga, st lahter on tühi, siis IF tingimus koodi ei täida. Selle kontrollimiseks võite lahtris B5 kasutada = FirstWordOnly (A5) ja see tagastab 0
- Kui lahter pole tühi, kasutatakse funktsiooni For loop jaoks tingimust IF ja funktsiooniga LEFT toome esimese sõna alla
- Funktsioon JOIN lisab lõppu semikooloni, kui igas lahtris on mitu rida
Järeldus: UDF -i abil saame VBA kaudu eemaldada kõik lahtrite read, välja arvatud esimene sõna. See funktsioon töötab kõigis versioonides vanast uueni, st Microsoft Excel 2003, Microsoft Excel 2007, Microsoft Excel 2010, Microsoft Excel 2013.
Kui teile meeldisid meie ajaveebid, jagage seda oma sõpradega Facebookis. Samuti saate meid jälgida Twitteris ja Facebookis.
Tahaksime sinust kuulda, andke meile teada, kuidas saaksime oma tööd täiustada, täiendada või uuendada ning muuta see teie jaoks paremaks. Kirjuta meile meilisaidile