Jei susiduriate su situacija, kai kiekvienoje langelio eilutėje reikia tik pirmo žodžio, o ne viso simbolio, tuomet turite perskaityti šį straipsnį. Ši pamoka padės jums nuskaityti tik pirmą žodį per „Excel“ VBA kodą.
Šiame straipsnyje mes sutelksime dėmesį į tai, kaip išlaikyti pirmąjį žodį tik kiekvienoje langelio eilutėje, atskirtoje kabliataškiais per makro kodus.
Klausimas: Duomenys, kuriuose dirbu, kartais turi kelias eilutes kiekviename langelyje ir noriu išskirti tik pirmąjį žodį.
Originalų klausimą galite rasti čia
Toliau pateikiamas įvesties teksto momentinis vaizdas (prieš lapą)
Toliau pateikiamas įvesties teksto momentinis vaizdas (po lapo) A stulpelyje ir reikia išvesties stulpelyje B; žiūrėkite žemiau pateiktą momentinę nuotrauką:
Norėdami gauti kodą; norėdami paleisti VB redaktorių, turime atlikti toliau nurodytus veiksmus
- Spustelėkite skirtuką Kūrėjas
- Kodo grupėje pasirinkite „Visual Basic“
- Nukopijuokite žemiau esantį kodą į standartinį modulį
Funkcija FirstWordOnly (rng kaip diapazonas) Dim Arr () Kaip variantas Dim Count kaip sveikasis skaičius Dim i Kaip sveikųjų skaičių skaičius = Len (rng) - Len (Pakeisti (rng, Chr (10), "")) Jei skaičius> 0, tada ReDim Arr (0 Skaičiuoti) Jei i = 0 Skaičiuoti Jei i = 0, tada Arr (i) = Kairė (rng, InStr (1, rng, "") - 1) ElseIf j = 0 Tada j = InStr (1, rng, Chr (10)) Arr (i) = Vidutinis (rng, j + 1, InStr (j, rng, "") - j) Kiti j = InStr (j + 1, rng, Chr (10)) Arr (i) = Vidurys (rng, j + 1, InStr (j, rng, "") - j) Pabaiga, jei kitas FirstWordOnly = Prisijungti (Arr, ";") Else If InStr (1, rng, "")> 0 Tada FirstWordOnly = Kairė (rng, InStr (1, rng, "")) Kita FirstWordOnly = rng pabaiga, jei pabaiga, jei pabaiga
Dabar VBA kodas paruoštas naudoti; prieš lapą naudosime naujai sukurtą vartotojo apibrėžtą funkciją, ty „FirstWordOnly“.
- Norint gauti išvestį naudojant UDF langelyje B2, formulė bus tokia
- = Tik „FirstWordOnly“ (A2)
Kodo paaiškinimas:
Pirmiau pateiktame kode mes panaudojome funkcijas COUNT, LEN, REPLACE, IF, INSTR, MID, CHR, LEFT, JOIN VBA.
- „Len (rng)“; tai patikrins langelio, į kurį kalbame, ilgį
- „Pakeisti (rng, Chr (10),„ “)“; Kodas tikrina Chr (10), ty kiekvienos eilutės eilutės pertrauką, tada pakeičiamas dvigubomis kabutėmis (nieko)
- „Skaičiuoti = Len (rng) - Len (Pakeisti (rng, Chr (10)," "))“; „Count“ išsaugos kiekvienos eilutės ilgio skirtumą pakeitus eilutės pertrauką
- Jei skaičius> 0; tai patikrins, ar skaičiavimo ilgis yra didesnis nei nulis, ir jei jis yra lygus nuliui, ty langelis yra tuščias, tada IF sąlyga kodo nevykdys. Norėdami tai patikrinti, B5 langelyje galite naudoti = FirstWordOnly (A5) ir jis grąžins 0
- Jei langelis nėra tuščias, tada For ciklas bus naudojamas su IF sąlyga ir, naudojant funkciją LEFT, mes nuskaitysime pirmąjį žodį
- Funkcija JOIN pridės kabliataškį pabaigoje, jei kiekvienoje ląstelėje yra kelios eilutės
Išvada: Naudodami UDF, mes galime pašalinti viską iš kiekvienos langelio eilutės, išskyrus pirmąjį žodį per VBA. Ši funkcija veiks visose versijose nuo senų iki naujų, t. Y. „Microsoft Excel 2003“, „Microsoft Excel 2007“, „Microsoft Excel 2010“, „Microsoft Excel 2013“.
Jei jums patiko mūsų tinklaraščiai, pasidalykite jais su draugais „Facebook“. Taip pat galite sekti mus „Twitter“ ir „Facebook“.
Mes norėtume išgirsti jūsų nuomonę, praneškite mums, kaip galime patobulinti, papildyti ar naujovinti savo darbą ir padaryti jį geresnį. Parašykite mums el