Pagina 1 din 1

transpose by array formula

Scris: Mar Iul 10, 2018 4:55 pm
de carkalete23
Buna seara,

am nevoie de ajutorul vostru pentru usurarea sau gasirea unei solutii alternative pentru problema urmatoare:
pe coloana A am mai multe valori duplicate, De ex A2:A4 are aceeasi valoare B2= blank, B3=1, b3=2...
Acesti stepi pot ajunge pana la un maxim de 5(deci 6 valori egale aferente coloanei A incluzand si primul blank.)
Ca si task eu a trbui sa fac un fel de transpose in care am facut urmatoarele:
In coloana J am folosit

Cod: Selectaţi tot

{=IFERROR(INDEX($A$2:$A$65585; MATCH(0;COUNTIF($J$1:J1;$A$2:$A$65585);0));"")}
pentru a identifica valorile unice din coloana A
iar de la coloana K la Y, pe un max de 4 step am folosit

Cod: Selectaţi tot

{=IFERROR(INDEX($B$2:$B$6485;SMALL(IF(J2=$A$2:$A$6485;ROW($A$2:$A$6485)-ROW($A$2)+1);[b]1[/b]));" ")}
pentru a prelua valoarea din coloana B/C si D... incrementand ultimul 1(cea mai mica valoare din data setul functiei SMALL)

Intrucat se prevad cantitati exorbitante de date pentru primele 4 coloane si e posibil sa ma trezesc cu un excel crash :)... s-ar putea gasi o varianta de macro?(sau orice altceva in asa fel sa nu ingreuneze procesarea tuturor informatilor)


Atasez si fisierul cu exemplul facut.
Va multumesc frumos,
Claudiu P

Re: transpose by array formula

Scris: Mar Iul 10, 2018 5:35 pm
de H2SO4
Salut,

Titlul spune tot...transpose by array formula

Incerc sa inteleg dar...(oare ce ar fi zis dl. Indigo de limbajul folosit)
Acesti stepi pot ajunge pana la un maxim de 5(deci 6 valori egale aferente coloanei A incluzand si primul blank.)
Ce sunt acesti stepi???? e vorba de pasi??
Ca si task eu a trbui sa fac un fel de transpose in care am facut urmatoarele:
Un fel de transpose?
Intrucat se prevad cantitati exorbitante
cantitati exorbitante ????

Re: transpose by array formula

Scris: Mie Iul 11, 2018 12:51 am
de TudyBTH
Buna,

Aveti mai jos un cod VBA care face centralizarea descrisa de dv.

Cod: Selectaţi tot

Sub Centralizing()

    Dim rInput As Range, rResult As Range
    Dim i As Long, j As Long
    Dim dict As Object
    Dim prod As Variant, action As Variant, inv As Variant
    Dim step As Integer
    
    
    '=======================================================
    'aici modificati corespunzator cu adresele din fisier
    Set rInput = ThisWorkbook.Sheets("Sheet4").Range("A1")
    Set rResult = ThisWorkbook.Sheets("Sheet4").Range("J1")
    '=======================================================
    
    Application.ScreenUpdating = False
    
    'sterge datele din zona result si scrie capul de tabel
    If Len(rResult.Value) > 0 Then rResult.CurrentRegion.ClearContents
    rResult.Value = rInput.Value
    For i = 1 To 6
        rInput.Offset(, 1).Resize(1, 3).Copy rResult.Offset(, (i - 1) * 3 + 1)
    Next i
    
    'extrage datele
    Set dict = CreateObject("Scripting.Dictionary")
    i = 0
    Do Until Len(rInput.Offset(i + 1, 0).Value) = 0 Or rInput.Offset(i, 0).Row = rInput.Parent.Rows.Count
        i = i + 1
        prod = rInput.Offset(i, 0).Value
        step = rInput.Offset(i, 1).Value
        action = rInput.Offset(i, 2).Value
        inv = rInput.Offset(i, 3).Value
        If Not dict.exists(prod) Then
            j = j + 1
            dict.Add prod, 0
            rResult.Offset(j, 0).Value = prod
        End If
        rResult.Offset(j, step * 3 + 1).Value = step
        rResult.Offset(j, step * 3 + 2).Value = action
        rResult.Offset(j, step * 3 + 3).Value = inv
    Loop
    
    Application.ScreenUpdating = True

End Sub

Re: transpose by array formula

Scris: Mie Iul 11, 2018 6:28 am
de carkalete23
H2SO4 scrie:Salut,

Titlul spune tot...transpose by array formula

Incerc sa inteleg dar...(oare ce ar fi zis dl. Indigo de limbajul folosit)
Acesti stepi pot ajunge pana la un maxim de 5(deci 6 valori egale aferente coloanei A incluzand si primul blank.)
Ce sunt acesti stepi???? e vorba de pasi??
Ca si task eu a trbui sa fac un fel de transpose in care am facut urmatoarele:
Un fel de transpose?
Intrucat se prevad cantitati exorbitante
cantitati exorbitante ????
Deoarece mi-am luat-o de foarte multe ori in freza pentru ca nu am detaliat foarte clar problema, am zis sa ma fac cat pot de inteles.
Da, acei stepi sunt pasi...Daca aveai curiozitatea sa deschizi fisierul atasat vedeai ca exista o coloana "step"...
..... In fine, imi cer scuze daca te-am deranjat vizual dar ma bucur ca ai inteles problema. :o

@TudyBTH - imi cer scuze pentru rautacismele colegului @H2SO4. Este perfect, l-am testat cu 10k record si functioneaza excelent.
Iti multumesc frumos
Claudiu P

Re: transpose by array formula

Scris: Mie Iul 11, 2018 4:41 pm
de H2SO4
carcalete23,

nu sunt "rautacisme" dar daca poti, de ce sa nu scrii in limba romana? sau poate nu poti si atunci ar fi de inteles.
De ce sa folosim niste termeni in alta limba cand avem cuvinte in limba noastra, sau vrei sa pari mai interesant?. Pentru mine nu esti, ba chiar opus....
mai bine ai invata sa te exprimi....

Re: transpose by array formula

Scris: Vin Iul 13, 2018 4:05 pm
de carkalete23
H2SO4,

nu are rost sa necertam... vad ca esti destul de pornit. iti sugerez sa iti modifici aceasta semnatura:
"“Tell me and I forget, teach me and I may remember, involve me and I learn.”" daca tot esti roman...
Si @TudyBTH este tot roman si nu cred ca a fost deranjat de "romgleza" mea... si culmea la el nu apare "Tell me..., teach me..." and so on....

Eu zic sa ramanem prieteni, unde este cazul sa ne ajutam... sa fim oameni/membri pe acest forum.

Iti multumesc,
Sa ai o zi buna!
Claudiu P

Re: transpose by array formula

Scris: Vin Iul 13, 2018 9:54 pm
de H2SO4
@carkalete,
nu are rost sa necertam... vad ca esti destul de pornit.
Eu am vrut sa spun (pacat ca nu intelegi lucrurile simple) ca mixarea unor cuvinte din mai multe limbi nu e normala si denota.... poate ai sa intelegi ...o sa-ti ia vreo 40 ani...
iti sugerez sa iti modifici aceasta semnatura:...
si care ar fi motivul??? ca nu intelegi tu ce inseamna?, lasa ca inteleg altii...

Daca te uitai mai bine, acea "semnatura" este incadrata de ghilimele (cauta in dictionar sa vezi ce inseamna, ghilimele) , nu stiu daca intelegi asa ceva, dar este un citat (cauta in dictionar sa vezi ce inseamna citat) si nu este normal sa il traduci decat pentru cei ca tine care nu inteleg dar dau din gura...

Nu vreau sa continui, ca iesim din sfera acestui forum...

Re: transpose by array formula

Scris: Dum Iul 22, 2018 7:31 pm
de carkalete23
@H2SO4

Din păcate suntem corporatiști, iar aceasta limba(romgleza) îmbină elemente de română şi engleză din care rezultă un dialect tehnic, cuvintele englezeşti fiind folosite în special în medii precum IT, marketing, management.
Din respect pentru acest forum nu am cum sa ma cobor la nivelul tau ca sa putem vorbi ca pe maidan...Cu adresari respectuoase către mămica, tăticul, frați, surori, cei trecuți in neființa ... Cu toate ca, in cazul in tau, mi-ar face placere sa ne auzim la o bere ca sa îți pot înțelege frustrarea ta de roman get beget...

Te salut cu cel mai al dracu respect, (vorba unui mare dramaturg de la Paraziții)
Claudiu P

Re: transpose by array formula

Scris: Dum Iul 22, 2018 11:16 pm
de H2SO4
@carcalete,

Eu sunt tot "corporatist" si lucrez in IT dar noi nu folosim "romgleza". Tu esti un semianalfabet altfel nu foloseai pluralul de la "step" ca stepi???? ori spuneai steps ori pasi, dar se pare ca tu nu stii nici limba romana, nici limba engleza. Esti cam sarac cu duhul...(sa iti traduc ce inseamna?? dar se pare ca si daca ti-as traduce tu tot nu ai intelege)

Sa te cobori la nivelul meu???? tu nu ai cum sa mai cobori, esti pe cel mai jos nivel cu putinta. Iar daca nivelul meu este de maidan, nivelul tau care este????
sa îți pot înțelege frustrarea ta de roman get beget...
Pentru putina ta cultura generala, "get beget" se scrie cu cratima, adica get-beget ...(sa iti traduc ce inseamna?? dar se pare ca si daca ti-as traduce tu tot nu ai intelege)


dar de ce nu poti intelege, tu esti o corcitura si nu roman get-beget...