Avatar uživatele
Zlatý

Jak udělat v excelu:

Mám ve sloupci "A" na každém řádku nějaký text a mezi ním jsou emailové adresy a potřebuju aby mi v sousední buňce ve sloupci "B" vyhodil jen tu emailovou adresu, a v případě že jich tam bude víc, tak všechny vedle sebe oddělené mezerou. Dokázal by si s tím někdo poradit?

Odpovědi:


Avatar uživatele
Pokročilý

Vyzkoušej tento prográmek. Nevím, jaké máš zkušenosti s VBA. Když tak napiš a já ti poradím, jak postupovat.

Sub EAdresy()
Dim ret$, rad&, radDo&, poz%, pozZ%, pozK%
' Z řetězce v buňkách A vybere emailovou adresu a zkopíruje ji do sloupce B
' POZOR! V textu nesmí být jiný zavináč, než ten v adresách.
For rad = 5000 To 1 Step -1
If Cells(rad, 1).Value <> "" Then radDo = rad: Exit For
Next rad
poz = 1
For rad = 1 To radDo
ret = Cells(rad, 1).Value
Cells(rad, 2).Value = ""
For poz = poz To Len(ret)
If Mid(ret, poz, 1) = "@" Then
pozZ = poz + 1
pozK = pozZ
While Mid(ret, pozZ, 1) <> " "
pozZ = pozZ - 1
Wend
pozZ = pozZ + 1

N0:
Select Case Mid(ret, pozK, 1)
Case " "
pozK = pozK + 1
If pozK > Len(ret) Then GoTo N1
Case Else
pozK = pozK + 1
If pozK > Len(ret) Then pozK = pozK - 1: GoTo N1
GoTo N0
End Select

N1:
Cells(rad, 2).Value = Cells(rad, 2).Value & Mid(ret, pozZ, pozK - pozZ) & " "
poz = pozK
End If
Next poz
pozZ = 0: pozK = 0: poz = 1
Next rad
End Sub

Podmínkou je, že v textu ve sloupci A budou pouze zavináče (@), které patří adresám.
Doplňuji:
Začátek programu začíná řádkem Sub EAdresy() a končí End Sub

 

Diskuze k otázce

Avatar uživatele
Zlatý

bolak

nonnel: budeš mě muset popostrčit, jednou už mi to tu sice někdo "ukazoval", ale já už to zapomněl :) takže pěkně krůčej po krůčeji, buď tak hodný :)

 

Přihlásit se

Položte otázku, odpovězte, zapojte se, …

začněte zde

Reklama

Kvalitní odpovědi v: Počítače a internet

Zlatý Bedy 1525
Zlatý Michal Kole 1198
Zlatý mosoj 1028
Zlatý Hlada 949
Zlatý ge0rge 894
Zlatý www 829
Zlatý led 819
Zlatý badisko 818
Zlatý gecco 795
Zlatý arygnoc 674

Zobrazit celkový žebříček

Facebook

 

Váš požadavek se vyřizuje, počkejte prosím.