Note: The other languages of the website are Google-translated. Back to English

 Cum se transpun celulele într-o coloană pe baza valorilor unice dintr-o altă coloană?

Presupunând că aveți o serie de date care conține două coloane, acum doriți să transpuneți celulele într-o coloană pe rânduri orizontale pe baza valorilor unice dintr-o altă coloană pentru a obține următorul rezultat. Aveți idei bune pentru a rezolva această problemă în Excel?

doc transpune valori unice 1

Transpuneți celulele într-o singură coloană pe baza valorilor unice cu formule

Transpuneți celulele într-o singură coloană pe baza valorilor unice cu codul VBA

Transpuneți celulele într-o singură coloană pe baza valorilor unice cu Kutools pentru Excel


Cu următoarele formule de matrice, puteți extrage valorile unice și transpune datele lor corespunzătoare în rânduri orizontale, procedați după cum urmează:

1. Introduceți această formulă matrice: = INDEX ($ A $ 2: $ A $ 16, MATCH (0, COUNTIF ($ D $ 1: $ D1, $ A $ 2: $ A $ 16), 0)) într-o celulă goală, D2, de exemplu, și apăsați Shift + Ctrl + Enter tastele împreună pentru a obține rezultatul corect, consultați captura de ecran:

doc transpune valori unice 2

notițe: În formula de mai sus, A2: A16 este coloana din care doriți să enumerați valorile unice și D1 este celula de deasupra acestei celule formula.

2. Apoi trageți mânerul de umplere în jos în celule pentru a extrage toate valorile unice, vedeți captura de ecran:

doc transpune valori unice 3

3. Și apoi continuați să introduceți această formulă în celula E2: =IFERROR(INDEX($B$2:$B$16, MATCH(0, COUNTIF($D2:D2,$B$2:$B$16)+IF($A$2:$A$16<>$D2, 1, 0), 0)), 0), și nu uitați să apăsați Shift + Ctrl + Enter tastele pentru a obține rezultatul, vezi captura de ecran:

doc transpune valori unice 4

notițe: În formula de mai sus: B2: B16 sunt datele coloanei pe care doriți să le transpuneți, A2: A16 este coloana pe care doriți să transpuneți valorile pe baza și D2 conține valoarea unică pe care ați extras-o la pasul 1.

4. Apoi trageți mânerul de umplere la dreapta celulelor pe care doriți să le afișați datele transpuse până când se afișează 0, vedeți captura de ecran:

doc transpune valori unice 5

5. Și apoi continuați să trageți mânerul de umplere în jos în intervalul de celule pentru a obține datele transpuse după cum se arată în următoarea captură de ecran:

doc transpune valori unice 6


Poate că formulele sunt complexe pentru a înțelege, aici puteți rula următorul cod VBA pentru a obține rezultatul dorit de care aveți nevoie.

1. Țineți apăsat butonul ALT + F11 tastele pentru a deschide Microsoft Visual Basic pentru aplicații fereastră.

2. Clic Insera > Moduleși lipiți următorul cod în Module Fereastră.

Cod VBA: transpuneți celulele într-o coloană pe baza valorilor unice dintr-o altă coloană:

Sub transposeunique()
'updateby Extendoffice
    Dim xLRow As Long
    Dim i As Long
    Dim xCrit As String
    Dim xCol  As New Collection
    Dim xRg As Range
    Dim xOutRg As Range
    Dim xTxt As String
    Dim xCount As Long
    Dim xVRg As Range
    On Error Resume Next
    xTxt = ActiveWindow.RangeSelection.Address
    Set xRg = Application.InputBox("please select data range(only two columns):", "Kutools for Excel", xTxt, , , , , 8)
    Set xRg = Application.Intersect(xRg, xRg.Worksheet.UsedRange)
    If xRg Is Nothing Then Exit Sub
    If (xRg.Columns.Count <> 2) Or _
       (xRg.Areas.Count > 1) Then
        MsgBox "the used range is only one area with two columns ", , "Kutools for Excel"
        Exit Sub
    End If
    Set xOutRg = Application.InputBox("please select output range(specify one cell):", "Kutools for Excel", xTxt, , , , , 8)
    If xOutRg Is Nothing Then Exit Sub
    Set xOutRg = xOutRg.Range(1)
    xLRow = xRg.Rows.Count
    For i = 2 To xLRow
        xCol.Add xRg.Cells(i, 1).Value, xRg.Cells(i, 1).Value
    Next
    Application.ScreenUpdating = False
    For i = 1 To xCol.Count
        xCrit = xCol.Item(i)
        xOutRg.Offset(i, 0) = xCrit
        xRg.AutoFilter Field:=1, Criteria1:=xCrit
        Set xVRg = xRg.Range("B2:B" & xLRow).SpecialCells(xlCellTypeVisible)
        If xVRg.Count > xCount Then xCount = xVRg.Count
        xRg.Range("B2:B" & xLRow).SpecialCells(xlCellTypeVisible).Copy
        xOutRg.Offset(i, 1).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
        Application.CutCopyMode = False
    Next
    xOutRg = xRg.Cells(1, 1)
    xOutRg.Offset(0, 1).Resize(1, xCount) = xRg.Cells(1, 2)
    xRg.Rows(1).Copy
    xOutRg.Resize(1, xCount + 1).PasteSpecial Paste:=xlPasteFormats
    xRg.AutoFilter
    Application.ScreenUpdating = True
End Sub

3. Apoi apăsați F5 pentru a rula acest cod și va apărea o casetă de prompt pentru a vă reaminti să selectați intervalul de date pe care doriți să îl utilizați, consultați captura de ecran:

doc transpune valori unice 7

4. Apoi faceți clic pe OK buton, o altă casetă de prompt va apărea pentru a vă reaminti să selectați o celulă pentru a pune rezultatul, vedeți captura de ecran:

doc transpune valori unice 8

6. Clic OK , iar datele din coloana B au fost transpuse pe baza valorilor unice din coloana A, consultați captura de ecran:

doc transpune valori unice 9


Dacă aveţi Kutools pentru Excel, combinând Rânduri combinate avansate și Celule divizate utilitare, puteți finaliza rapid această sarcină fără formule sau cod.

Kutools pentru Excel : cu mai mult de 300 de programe de completare Excel la îndemână, gratuit pentru a încerca fără limitări în 30 de zile.

După instalare Kutools pentru Excel, vă rugăm să faceți următoarele:

1. Selectați intervalul de date pe care doriți să îl utilizați. (Dacă doriți să păstrați datele originale, vă rugăm să copiați și să lipiți datele într-o altă locație mai întâi.)

2. Apoi apasa Kutools > Merge & Split > Rânduri combinate avansate, vezi captura de ecran:

3. În Combinați rândurile pe baza coloanei caseta de dialog, vă rugăm să efectuați următoarele operații:

(1.) Faceți clic pe numele coloanei pe care doriți să transpuneți datele și selectați Cheia principala;

(2.) Faceți clic pe o altă coloană pe care doriți să o transpuneți și faceți clic pe Combina apoi alegeți un separator pentru a separa datele combinate, cum ar fi spațiu, virgulă, punct și virgulă.

doc transpune valori unice 11

4. Apoi apasa Ok butonul, datele din coloana B au fost combinate împreună într-o singură celulă pe baza coloanei A, vezi captura de ecran:

doc transpune valori unice 12

5. Și apoi selectați celulele combinate și faceți clic Kutools > Merge & Split > Celule divizate, vezi captura de ecran:

6. În Celule divizate fereastră de dialog, selectați Împărțiți în coloane în temeiul Tip , apoi alegeți separatorul care separă datele combinate, vedeți captura de ecran:

doc transpune valori unice 14 14

7. Apoi apasa Ok și selectați o celulă pentru a pune rezultatul împărțit în caseta de dialog pop-out, consultați captura de ecran:

doc transpune valori unice 15

8. Clic OK, și veți obține rezultatul după cum aveți nevoie. Vedeți captura de ecran:

doc transpune valori unice 16

Descărcați și proba gratuită Kutools pentru Excel acum!


Kutools pentru Excel: cu mai mult de 300 de programe de completare Excel la îndemână, încercați fără limitări în 30 de zile. Descărcați și proba gratuită acum!

Cele mai bune instrumente de productivitate Office

Kutools pentru Excel vă rezolvă majoritatea problemelor și vă crește productivitatea cu 80%

  • reutilizarea: Introduceți rapid formule complexe, diagrame și orice ai folosit anterior; Criptați celulele cu parola; Creați o listă de corespondență și trimiteți e-mailuri ...
  • Super Formula Bar (editați cu ușurință mai multe linii de text și formulă); Layout de citire (citiți și editați cu ușurință un număr mare de celule); Lipiți la interval filtrat...
  • Merge celule / rânduri / coloane fără a pierde date; Conținut de celule divizate; Combinați rânduri / coloane duplicate... Prevenirea celulelor duplicate; Comparați gamele...
  • Selectați Duplicat sau Unic Rânduri; Selectați Rânduri goale (toate celulele sunt goale); Super Find și Fuzzy Find în multe cărți de lucru; Selectare aleatorie ...
  • Copie exactă Mai multe celule fără modificarea referinței formulelor; Creați automat referințe la foi multiple; Introduceți gloanțe, Casete de selectare și multe altele ...
  • Extrageți textul, Adăugați text, eliminați după poziție, Eliminați spațiul; Creați și imprimați subtotaluri de paginare; Convertiți conținutul dintre celule și comentarii...
  • Super Filtru (salvați și aplicați scheme de filtrare altor foi); Sortare avansată după lună / săptămână / zi, frecvență și multe altele; Filtru special cu bold, italic ...
  • Combinați cărți de lucru și foi de lucru; Merge Tables pe baza coloanelor cheie; Împărțiți datele în mai multe foi; Conversia în loturi xls, xlsx și PDF...
  • Peste 300 de funcții puternice. Suportă Office / Excel 2007-2021 și 365. Acceptă toate limbile. Implementare ușoară în întreprinderea sau organizația dvs. Funcții complete Probă gratuită de 30 de zile. Garanție de returnare a banilor de 60 de zile.
fila kte 201905

Fila Office aduce interfața cu file în Office și vă face munca mult mai ușoară

  • Activați editarea și citirea cu file în Word, Excel, PowerPoint, Publisher, Access, Visio și Project.
  • Deschideți și creați mai multe documente în filele noi ale aceleiași ferestre, mai degrabă decât în ​​ferestrele noi.
  • Vă crește productivitatea cu 50% și reduce sute de clicuri de mouse pentru dvs. în fiecare zi!
fundul officetab
Comentarii (56)
Încă nu există evaluări. Fii primul care evaluează!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Cum aș merge în direcția opusă? Din mai multe coloane într-o singură coloană? Mulțumesc anticipat! Tim
Acest comentariu a fost redus la minimum de moderatorul de pe site
Asta a fost fantastic. Am avut un excel cu aproximativ 2000 de valori unice în rândul A și nu aș fi putut reuși acest exercițiu fără ajutorul tău. Multe multe mulțumiri.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Primul pas în sine eșuează =INDEX($A$2:$A$16, MATCH(0, COUNTIF($D$1:$D1, $A$2:$A$16), 0)) dă o eroare Valoare nu este disponibilă
Acest comentariu a fost redus la minimum de moderatorul de pe site
Vreau doar să fac invers. De parcă am deja rezultatul final și vreau să fac primul pas.
Acest comentariu a fost redus la minimum de moderatorul de pe site
eu caut acelasi lucru
Acest comentariu a fost redus la minimum de moderatorul de pe site
Ai găsit vreo soluție pentru scenariul opus? Mulțumiri!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Vreau să fac și eu invers. Aveți vreo soluție, domnilor?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Buna baieti,
Pentru a obține rezultatul opus pe baza exemplului acestui articol, puteți aplica următorul cod VBA: (Notă: Când selectați intervalul de date pe care doriți să îl transpuneți, excludeți rândul antetului)

Sub TransposeUnique_2()
Dim xLRow, xLCount As Long
Dim xRg As Range
Dim xOutRg As Range
Dim xObjRRg As Range
Dim xTxt ca șir
Dim xCount As Long
Dim xVRg Ca Gama
La data de eroare CV următoare
xTxt = ActiveWindow.RangeSelection.Address
Set xRg = Application.InputBox(„te rugăm să selectezi intervalul de date:”, „Kutools pentru Excel”, xTxt, , , , , 8)
Set xRg = Application.Intersect(xRg, xRg.Worksheet.UsedRange)
Dacă xRg nu este nimic, ieșiți din sub
Dacă (xRg.Rows.count < 2) Sau _
(xRg.Areas.count > 1) Apoi
MsgBox „Selectare nevalidă”, , „Kutools pentru Excel”
Ieșiți din Sub
Final, dacă
Set xOutRg = Application.InputBox ("vă rugăm să selectați intervalul de ieșire (specificați o celulă):", "Kutools pentru Excel", xTxt, , , , , 8)
Dacă xOutRg este Nimic, Ieșiți din Sub
Application.ScreenUpdating = Fals
xLCount = xRg.Columns.count
Pentru xLRow = 1 To xRg.Rows.count
Setați xObjRRg = Range(xRg.Cells(xLRow, 2), xRg.Cells(xLRow, xLCount)).SpecialCells(xlCellTypeConstants)
xObjRRg.Copy
xOutRg.Offset(, 1).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
Application.CutCopyMode = Fals
Interval(Cells(xOutRg.Row, xOutRg.Column), Cells(xOutRg.Row + xObjRRg.count - 1, xOutRg.Column)).Valoare = xRg.Cells(xLRow, 1).Value
Setați xOutRg = xOutRg.Offset(RowOffset:=xObjRRg.count)
Pagina Următoare →
Application.ScreenUpdating = Adevărat
End Sub
Acest comentariu a fost redus la minimum de moderatorul de pe site
Cum se face transpunerea dacă coloana B nu are valori unice, dar mai are nevoie de acele valori
KTE 100
KTE 100
Presupunând că sunt două tranzacții diferite
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, Didin,

Puteți să vă prezentați problema mai clar sau mai detaliat?
Puteți insera un exemplu de captură de ecran pentru problema dvs.
Mulțumesc!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Salut,
Ma puteti ajuta va rog cu cerinta de mai jos.
Produs ----- comanda
KTE ------ 100KTE ------ 200KTO ------ 300KTO ------ 300
rezultatul așteptat
Produs ----- comanda ----- comanda ------ comanda
KTE ------ 100 ------ 200
KTO ------ 300 ------ 300







Acest comentariu a fost redus la minimum de moderatorul de pe site
Și eu am nevoie de același lucru. Vreau să afișez 100 de două ori dacă există în date
Acest comentariu a fost redus la minimum de moderatorul de pe site
Puteți sugera o formulă pentru asta
Acest comentariu a fost redus la minimum de moderatorul de pe site
Ați primit vreodată un răspuns/rezoluție la această provocare? eu am aceeasi.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Există vreo modalitate de a face asta invers? Adică date în rânduri de lungimi diferite și, prin urmare, sortarea lor în două coloane? Vezi atasat.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Vreau să transpun și valorile duplicate (toate valorile - unic + duplicat) și nu doar valorile unice. Poti sa dai si formula pentru asta.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Am nevoie la fel
Acest comentariu a fost redus la minimum de moderatorul de pe site
Ați primit vreodată un răspuns/rezoluție la această provocare? eu am aceeasi.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Cu formula de mai jos:

=IFERROR(INDEX($B$2:$B$45, MATCH(0, COUNTIF($D2:D2,$B$2:$B$45)+IF($A$2:$A$10<>$D2, 1, 0), 0)), 0)

Cum pot transpune datele folosind potriviri aproximative? Să spunem, vreau să extrag toate valorile din coloana B care se potrivesc cu primele 9 caractere/cifre din coloana A? Coloana B are 11 caractere în timp ce A doar 9. mulțumesc!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Trebuie să fac exact opusul acestui lucru. Am multe coloane asociate cu un ID de rând și vreau să le lipesc în două coloane
de exemplu am
rowid, valoare, valoare1, valoare2, valoare3, valoare4, valoare..225
100, Delfin, 255, 9--, sarah, jameson, ....
179, Router, flood, jason, 89, nas



Vreau să arate așa
100, Delfinul
100, 255
100, 9--
100, Sarah
100, jaemeson
179, Router
179, inundație
179, Jason
179, 89
179, nas
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, Dave,
Pentru a vă rezolva problema, vă rugăm să utilizați codul VBA de mai jos: (Notă: când selectați intervalul de date pe care doriți să îl transpuneți, excludeți rândul antetului.)

Sub TransposeUnique_2()
Dim xLRow, xLCount As Long
Dim xRg As Range
Dim xOutRg As Range
Dim xObjRRg As Range
Dim xTxt ca șir
Dim xCount As Long
Dim xVRg Ca Gama
La data de eroare CV următoare
xTxt = ActiveWindow.RangeSelection.Address
Set xRg = Application.InputBox(„te rugăm să selectezi intervalul de date:”, „Kutools pentru Excel”, xTxt, , , , , 8)
Set xRg = Application.Intersect(xRg, xRg.Worksheet.UsedRange)
Dacă xRg nu este nimic, ieșiți din sub
Dacă (xRg.Rows.count < 2) Sau _
(xRg.Areas.count > 1) Apoi
MsgBox „Selectare nevalidă”, , „Kutools pentru Excel”
Ieșiți din Sub
Final, dacă
Set xOutRg = Application.InputBox ("vă rugăm să selectați intervalul de ieșire (specificați o celulă):", "Kutools pentru Excel", xTxt, , , , , 8)
Dacă xOutRg este Nimic, Ieșiți din Sub
Application.ScreenUpdating = Fals
xLCount = xRg.Columns.count
Pentru xLRow = 1 To xRg.Rows.count
Setați xObjRRg = Range(xRg.Cells(xLRow, 2), xRg.Cells(xLRow, xLCount)).SpecialCells(xlCellTypeConstants)
xObjRRg.Copy
xOutRg.Offset(, 1).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
Application.CutCopyMode = Fals
Interval(Cells(xOutRg.Row, xOutRg.Column), Cells(xOutRg.Row + xObjRRg.count - 1, xOutRg.Column)).Valoare = xRg.Cells(xLRow, 1).Value
Setați xOutRg = xOutRg.Offset(RowOffset:=xObjRRg.count)
Pagina Următoare →
Application.ScreenUpdating = Adevărat
End Sub
Acest comentariu a fost redus la minimum de moderatorul de pe site
Mulțumesc, funcționează perfect, m-ai economisit 2 zile! :)
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună Skyyang,
Vă rugăm să distribuiți codul pentru 3 coloane. Mai jos este exemplul:
Vreau date precum: yogesh@gmail.com comunitate 1 vizualizare numai comunitate 2 numai vizualizare ...... goyal@gmail.com comunitate 1 vizualizare numai comunitate 2 numai vizualizare........

Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, ygoyal,

Pentru a vă rezolva problema, vă rugăm să aplicați codul de mai jos:

Sub TransposeUnique_2()

Dim xLRow, xLCount As Long

Dim xRg As Range

Dim xOutRg As Range

Dim xObjRRg As Range

Dim xTxt ca șir

Dim xCount As Long

Dim xVRg Ca Gama

Dim xC, xI, xI1, xI2 ca întreg

La data de eroare CV următoare

xTxt = ActiveWindow.RangeSelection.Address

Set xRg = Application.InputBox(„te rugăm să selectezi intervalul de date:”, „Kutools pentru Excel”, xTxt, , , , , 8)

Set xRg = Application.Intersect(xRg, xRg.Worksheet.UsedRange)

Dacă xRg nu este nimic, ieșiți din sub

Dacă (xRg.Rows.Count < 2) Sau _

(xRg.Areas.Count > 1) Apoi

MsgBox „Selectare nevalidă”, , „Kutools pentru Excel”

Ieșiți din Sub

Final, dacă

Set xOutRg = Application.InputBox ("vă rugăm să selectați intervalul de ieșire (specificați o celulă):", "Kutools pentru Excel", xTxt, , , , , 8)

Dacă xOutRg este Nimic, Ieșiți din Sub

Application.ScreenUpdating = Fals

xLCount = xRg.Columns.Count

Pentru xLRow = 1 To xRg.Rows.Count

Setați xObjRRg = Range(xRg.Cells(xLRow, 2), xRg.Cells(xLRow, xLCount)).SpecialCells(xlCellTypeConstants)

La data de eroare CV următoare

xC = (xObjRRg.Count Mod 2)

Dacă xC <> 0 Atunci

xC = Int(xObjRRg.Număr / 2) + 1

Altfel

xC = Int(xObjRRg.Număr / 2)

Final, dacă

xI1 = 1

xI2 = 2

Pentru xI = 1 La xC

Interval(xObjRRg.Item(xI1), xObjRRg.Item(xI2)).Copie

xOutRg.Offset(, 1).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

Application.CutCopyMode = Fals

xOutRg.Value = xRg.Cells(xLRow, 1).Value

Set xOutRg = xOutRg.Offset(RowOffset:=1)

xI1 = xI1 + (2)

xI2 = xI2 + (2)

Pagina Următoare →

Pagina Următoare →

Application.ScreenUpdating = Adevărat

End Sub



Vă rugăm să încercați, sper că vă poate ajuta!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună frate, codul funcționează vizavi. Vă rugăm să consultați captura de ecran atașată a cerinței. Datele disponibile sunt pe rând și doriți să transpuneți datele în coloane .
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, ygoyal,
Ne pare rău că răspund cu întârziere, vă rugăm să aplicați următorul cod, vă rugăm să încercați!

Sub transposeunique()

'updateby Extendoffice

Dim xLRow As Long

Dim i As Long

Dim xCrit As String

Dim xCol As New Collection

Dim xRg As Range

Dim xOutRg As Range

Dim xTxt ca șir

Dim xCount As Long

Dim xVRg Ca Gama

Dim xFRg, xSRg, xCRg As Range

La data de eroare CV următoare

xTxt = ActiveWindow.RangeSelection.Address

Set xRg = Application.InputBox(„vă rugăm să selectați intervalul de date (doar 3 coloane):”, „Kutools pentru Excel”, xTxt, , , , , 8)

Set xRg = Application.Intersect(xRg, xRg.Worksheet.UsedRange)

Dacă xRg nu este nimic, ieșiți din sub

Dacă (xRg.Columns.Count <> 3) Sau _

(xRg.Areas.Count > 1) Apoi

MsgBox „intervalul utilizat este doar o zonă cu două coloane”, , „Kutools pentru Excel”

Ieșiți din Sub

Final, dacă

Set xOutRg = Application.InputBox ("vă rugăm să selectați intervalul de ieșire (specificați o celulă):", "Kutools pentru Excel", xTxt, , , , , 8)

Dacă xOutRg este Nimic, Ieșiți din Sub

Setați xOutRg = xOutRg.Range(1)

xLRow = xRg.Rows.Count

Pentru i = 2 La xLRow

xCol.Add xRg.Cells(i, 1).Value, xRg.Cells(i, 1).Value

Pagina Următoare →

Application.ScreenUpdating = Fals

Application.ScreenUpdating = Fals

Pentru i = 1 To xCol.Count

xCrit = xCol.Item(i)

xOutRg.Offset(i, 0) = xCrit

Câmp xRg.AutoFilter:=1, Criteria1:=xCrit

Setați xVRg = xRg.Range(„B2:B” și xLRow).SpecialCells(xlCellTypeVisible)

Dacă xVRg.Count > xCount, atunci xCount = xVRg.Count

Setați xSRg = xRg.Range(„B2:B” și xLRow).SpecialCells(xlCellTypeVisible)

Set xCRg = xOutRg.Offset(i, 1)

Pentru fiecare xFRg în xSRg

xFRg.Copie

xCRg.PasteSpecial

xRg.Range("B1").Copy

xCRg.Offset(-(i), 0).PasteSpecial

xFRg.Offset(0, 1).Copy

Setați xCRg = xCRg.Offset(0, 1)

xCRg.PasteSpecial

xRg.Range("c1").Copy

xCRg.Offset(-(i), 0).PasteSpecial

Setați xCRg = xCRg.Offset(0, 1)

Pagina Următoare →

Application.CutCopyMode = Fals

Pagina Următoare →

xRg.Item(1).Copy

xOutRg.PasteSpecial

xRg.AutoFilter

Application.ScreenUpdating = Adevărat

End Sub
Acest comentariu a fost redus la minimum de moderatorul de pe site
Hei, frate, am încercat să folosesc acest cod, dar excel se blochează când rulez acest cod și nu am putut vedea rezultatul din codul de mai sus. Vă rugăm să sugerați ce să faceți în acest caz.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună,
Codul funcționează bine în registrul meu de lucru, ce versiune Excel folosiți?
Acest comentariu a fost redus la minimum de moderatorul de pe site
MS Excel 2016
Acest comentariu a fost redus la minimum de moderatorul de pe site
Codul funcționează bine și în Excel 2016, vă rugăm să-l încercați mai întâi cu câteva date din intervale mici.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Am testat pe 160 de înregistrări, dar în acel duplicat mai existau.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună Skyyang, Îmi place asta, vreo șansă să-l faci să funcționeze pentru patru coloane? din nou folosind doar primele două ca un comparator, sau mai bine, capacitatea de a alege numărul de coloane înainte de a le selecta? M-am uitat la scenariul tău, nu aș avea habar despre cum să realizez asta...
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună Skyyang, Îmi place asta, vreo șansă să-l faci să funcționeze pentru patru coloane? din nou folosind doar primele două ca un comparator, sau mai bine, capacitatea de a alege numărul de coloane înainte de a le selecta? M-am uitat la scenariul tău, nu aș avea habar despre cum să realizez asta...
Acest comentariu a fost redus la minimum de moderatorul de pe site
Frate, te rog ajută-te în asta.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Salut frate, inca astept ajutorul tau
Acest comentariu a fost redus la minimum de moderatorul de pe site
Acest comentariu a fost redus la minimum de moderatorul de pe site
La fel ca și Dave, trebuie să fac exact opusul. Tabelul 2 de transpus în Tabelul 1. Tabelul de intrare 2, Tabelul de ieșire 1.
Acest comentariu a fost redus la minimum de moderatorul de pe site
=INDEX($A$2:$A$16, MATCH(0, COUNTIF($D$1:$D1, $A$2:$A$16), 0)) a funcționat pentru a transpune valorile unice ale unei coloane într-o nouă coloană coloana DAR... există o modalitate de a anunța într-o funcție de sortare, astfel încât noua coloană creată să fie transpusă în ordine crescătoare?


Multumesc!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Trebuie să obțineți aceeași ieșire, dar pentru coloanele predefinite care să fie selectate ar fi ($A,$B) și au nevoie de coloana de ieșire Poziția pe $D$1.
Daca are cineva idee ar fi de mare ajutor!!!!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, putem adăuga fiecare rând și da rezultatul într-o coloană, cu funcționalitatea de mai sus.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Deci lucrez pentru o companie. Avem coloane pentru informații precum Nume, prenume, rang, secțiune, număr de telefon, adresă. Există vreo modalitate prin care pot folosi o formulă similară pentru a transpune întregul rând de informații într-o coloană după nume?
Acest comentariu a fost redus la minimum de moderatorul de pe site
=INDEX($A$2:$A$16, MATCH(0, COUNTIF($D$1:$D1, $A$2:$A$16), 0)) a funcționat pentru a transpune valorile unice ale coloanei A într-o nouă coloană coloana DAR... există o modalitate de a face ca toate valorile din coloana B să fie transpuse după cum se arată mai jos:

Data Comanda Produsului Comanda Comanda Comanda Comanda Comanda Comanda Comanda
KTE 100 3 KTE 3 2019 100 100 100 200 100
KTO 150 3/3/2019 KTO 150 100 200 100 150 200
KTE 100 3 BOT 4 2019 150 100 200 150
KTO 100 3 COD 4 2019 200 150
KTO 200 3
KTE 100 3
BOT 150 3
BOT 100 3
KTO 100 3
KTE 200 3
BOT 200 3
COD 200 3
KTE 100 3
KTO 150 3
BOT 150 3
KTE 150 3
COD 150 3
BOT 100 3
BOT 200 3
COD 100 3
KTO 200 3
COD 150 3
KTE 100 3
Acest comentariu a fost redus la minimum de moderatorul de pe site
Macro-ul nu a funcționat. Tocmai a copiat conținutul din celula A1.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Am un set de date în coloanele A (ID unic) - E. Fiecare rând are date bazate pe ID#, există mai multe rânduri pentru fiecare ID#, dar vreau un rând pe ID# cu toate celelalte date în coloane ( ar fi 5 coloane lungime minim și 25 maxim în funcție de câte are fiecare ID unic). Am găsit un cod, dar funcționează doar pentru două coloane. A trebuit să concatenez cele patru coloane (fără a include ID-ul) apoi să delimitez după rularea macro-ului (multă muncă). Pentru 15,000 de rânduri de date, acest lucru necesită mult timp. Există o macrocomandă de coloană fără sfârșit care ar funcționa? Mulțumesc anticipat tuturor pentru ajutor!
COD ID ST COD# DATA
Acest comentariu a fost redus la minimum de moderatorul de pe site
Am un set de date care are mai multe ID-uri în coloana A și are date conectate în coloana B. Am folosit formula de mai sus și am modificat-o puțin, astfel încât să transpun celulele din coloana B într-un rând bazat pe ID-ul unic legat de acesta în coloana A. Formula utilizată pentru a identifica ID-urile unice este: =INDEX($A$2:$A$13409, MATCH(0, COUNTIF($D$1:$D1, $A$2:$A$13409), 0)). Formula folosită pentru a face transpunerea este: =IFERROR(INDEX($B$2:$B$13409, MATCH(0, IF($A$2:$A$13409<>$D2, 1, 0)+COUNTIF($D2:): D2,$B$2:$B$13409), 0)), „N/A”). Ambele date in articol, doar putin modificate.

Problema este că setul meu de date din coloana B are duplicate, uneori apărând unul după altul și am nevoie ca toate valorile din coloană să fie prezentate în rânduri.

Imaginea atașată este ceea ce aș dori să arate tabelul (aceasta este o dimensiune mică a eșantionului, setul de date adevărat are peste 13,000 de intrări). Ceea ce se întâmplă acum este că atunci când se întâlnește o valoare repetată, aceasta nu o va număra.
adică Rândul 9 pentru ID 11980 arată acum doar 0 -31.79 -0.19 -0.74 N/AN/A .... când ceea ce am nevoie să arate în schimb este 0 0 -31.79 -0.19 -0.74 0 0 N/AN/A . ...

Există vreo modalitate de a rezolva această problemă și de a o rezolva?

Va multumesc anticipat!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Ați primit vreodată un răspuns/rezoluție la această provocare? eu am aceeasi.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Am un set de date care are 3 coloane prezentate mai jos:



Coloana A Coloana B Coloana C



Țara1 Anul1 Valoare1

Țara1 Anul2 Valoare2

Țară1 An3 Valoare3,



Țara2 Anul1 Valoare1

Țară2 An3 Valoare3,

...........



Trebuie să combin aceste 3 coloane într-un tabel ca acesta:

Anul1 Anul2 Anul3 ................................. AnulX



Țara1 Valoare1 Valoare2 Valoare3

Țara2 Valoare1 #Valoare lipsă3

.....
.....
.....

CountryX Valuex ..................





Problema cu care mă confrunt este că pentru unele date din coloana A nu am valori pentru fiecare an doar pentru unele. (De exemplu, țara 2 are valori lipsă pentru anul 2)





Există vreo modalitate de a rezolva această problemă și de a o rezolva?



Va multumesc anticipat!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Vă rugăm să împărtășiți codul dacă sunt 2 coloane de copiat în loc de 1. mai jos este exemplul.
Nu există comentarii postate aici încă
Încărcați mai
Lăsa comentarii
Postare ca invitat
×
Evaluează această postare:
0   Caractere
Locații sugerate

Urmărește-ne

Copyright © 2009 - www.extendoffice.com. | Toate drepturile rezervate. Cu sprijinul ExtendOffice. | Harta site-ului
Microsoft și sigla Office sunt mărci comerciale sau mărci comerciale înregistrate ale Microsoft Corporation în Statele Unite și / sau în alte țări.
Protejat de Sectigo SSL