Extragere si concatenare itemuri in paranteze

Ce este nou in Microsoft Excel 2016?
Informatii despre cum se utilizeaza Microsoft Excel 2016
Calcule, Formule, Functii, Tabele pivot, Analiza datelor, etc
Liana
Mesaje: 46
Membru din: Mie Dec 14, 2016 6:07 pm

Extragere si concatenare itemuri in paranteze

Mesaj de Liana » Sâm Sep 14, 2019 10:50 am

Buna ziua,

De cateva zile ne confruntam cu o problema.
In coloana A avem ceva de genu'

[C12] xxxxxxxxxxx [A2] xxxxx [A7] xxxxxxxxxxxxxxxxx [B2]
[B4] xxxxxxxxxxxxxxxx [A1] xxxxxxxxxxxxxxx [C3]
[AC11] xxxxxxxxxx [B124] xxxxxxxxxxxxx

Din cate am vazut fiecare rand incepe cu [ urmata de o litera (una sau mai multe), si de cateva cifre (una sau mai multe) si se termina cu ], si nu e musai sa se termine cu un item in paranteze.

in coloana B as dori sa apara
[C12], [A2], [A7], [B2]
[B4], [A1], [C3]
[AC11], [B124]

Am prefera cu formule iar daca nu se poate cu formule, atunci cu un cod VBA.
Multumim.

Liana
Mesaje: 46
Membru din: Mie Dec 14, 2016 6:07 pm

Re: Extragere si concatenare itemuri in paranteze

Mesaj de Liana » Sâm Sep 14, 2019 12:45 pm

Imi cer scuze in col B ar trebui sa apara doar ce este in paranteze nu si parantezele.
Adica:

C12, A2, A7, B2
B4, A1, C3
AC11, B124

Multumesc.

IPP
Moderator
Moderator
Mesaje: 4196
Membru din: Mie Iul 29, 2009 7:26 am
Localitate: Cluj-Napoca

Re: Extragere si concatenare itemuri in paranteze

Mesaj de IPP » Sâm Sep 14, 2019 3:50 pm

Buna ziua

Atasat aveti spre testare o propunere folosind macro.
Obiectiv: extragerea informatie din fiecare celula din range-ul A2:A4 (a se edita in cod dupa necesitati) a informatiei cuprinsa intre paranteze drepte, valorile fiind separate de o virgula si un spatiu

Am folosit urmatorul cod:

Cod: Selectaţi tot

Sub ExtrageInfo()

'IPP - 14.09.2019

Dim bExt As Boolean
Dim vbResult As Variant

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

For Each c In Range("A2:A4")
 For i = 1 To Len(c)
  If Mid(c, i, 1) = "[" Then vbExt = True
  If Mid(c, i, 1) = "]" Then vbExt = False
 
  If vbExt = True Then
   vbResult = vbResult & Mid(c, i, 1)
  End If
 Next i

vbResult = Mid(vbResult, 2, 1000)
c.Offset(0, 1).Value = Replace(vbResult, "[", ", ")

vbResult = ""
Next c

Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True

End Sub
Pentru testare: deschideti fisierul atasat, activati macro/continutul si rulati macro

IP
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.

Indigo-ONE
Mesaje: 433
Membru din: Mar Dec 11, 2018 8:54 pm

Re: Extragere si concatenare itemuri in paranteze

Mesaj de Indigo-ONE » Sâm Sep 14, 2019 8:51 pm

Salut,

Daca te mai intereseaza si o formula, in B2 si trage in jos

=TEXTJOIN(", ";TRUE;FILTERXML("<a><b>"&SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2;"[";"");"] ";"</b>");" ";"<b>")&"</a>";"//b"))

evident, inlocuieste in formula ";" cu "," daca nu ai setari regionale romanesti.

Spor la treaba. :lol:


"I fear the day that technology will surpass our human interaction. The world will have a generation of idiots."
Albert Einstein

Indigo-ONE
Mesaje: 433
Membru din: Mar Dec 11, 2018 8:54 pm

Re: Extragere si concatenare itemuri in paranteze

Mesaj de Indigo-ONE » Dum Sep 15, 2019 10:08 pm

......revin


"I fear the day that technology will surpass our human interaction. The world will have a generation of idiots."
Albert Einstein

Indigo-ONE
Mesaje: 433
Membru din: Mar Dec 11, 2018 8:54 pm

Re: Extragere si concatenare itemuri in paranteze

Mesaj de Indigo-ONE » Dum Sep 15, 2019 10:26 pm

UDF daca te intereseaza....

In B1 (presupunand ca datele tale incep din A1) :

=ExtrageDinParanteze(A1)

Cod: Selectaţi tot

Function ExtrageDinParanteze(Ki As Range) As String
   Dim Ka As Variant
   Dim K As Long
   Ka = Split(Replace(Replace(Ki, "[", "|"), "]", "|"), "|")
   For K = 1 To UBound(Ka) Step 2
   ExtrageDinParanteze = ExtrageDinParanteze & Ka(K) & ", "
   Next K
   ExtrageDinParanteze = Left(ExtrageDinParanteze, Len(ExtrageDinParanteze) - 2)
End Function


"I fear the day that technology will surpass our human interaction. The world will have a generation of idiots."
Albert Einstein

Liana
Mesaje: 46
Membru din: Mie Dec 14, 2016 6:07 pm

Re: Extragere si concatenare itemuri in paranteze

Mesaj de Liana » Lun Sep 16, 2019 9:33 am

@ dl.IPP

Codul functioneaza. Multumesc mult.

dl. Indigo-ONE

Ne-am minunat toti de formula propusa. Bineinteles, ca niciunul dintre noi, nu a inteles cum functioneaza :lol: nici chiar colegii care lucreaza mult cu excelul. La un moment dat toti am crezut ca este o postare gresita. Si totusi FUNCTIONEAZA !!!!
Multumim si pentru formula si pentru functia UDF data. Evident ca functioneaza.

Multumim din suflet.

Catalin B.
Moderator
Moderator
Mesaje: 813
Membru din: Vin Sep 09, 2011 4:05 pm
Localitate: Iaşi

Re: Extragere si concatenare itemuri in paranteze

Mesaj de Catalin B. » Lun Sep 23, 2019 6:51 am

@ Liana,
Pentru diversitate, propun o solutie cu power query si regular expressions, solutie descrisa aici.
In fisierul anexat, textul initial este in tabelul din stanga, tiparul cautat in tabelul din mijloc, iar rezultatul in tabelul din dreapta.
Dupa adaugare text in tabelul din stanga, actualizare rezultate cu Ribbon>Data>Refresh All (sau direct in tabelul de rezultate-Click Dreapta-Refresh)
RegEx in Power Query.xlsx
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.
Probleme să fie, că soluţii se găsesc...

Scrie răspuns

Înapoi la “Intrebari despre Excel 2016”