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

 Wie transponiere ich Zellen in einer Spalte basierend auf eindeutigen Werten in einer anderen Spalte?

Angenommen, Sie haben einen Datenbereich, der zwei Spalten enthält. Jetzt möchten Sie Zellen in einer Spalte in horizontale Zeilen basierend auf eindeutigen Werten in einer anderen Spalte transponieren, um das folgende Ergebnis zu erhalten. Haben Sie gute Ideen, um dieses Problem in Excel zu lösen?

doc transponieren eindeutige Werte 1

Transponieren Sie Zellen in einer Spalte basierend auf eindeutigen Werten mit Formeln

Transponieren Sie Zellen in einer Spalte basierend auf eindeutigen Werten mit VBA-Code

Transponieren Sie Zellen in einer Spalte basierend auf eindeutigen Werten mit Kutools for Excel


Mit den folgenden Array-Formeln können Sie die eindeutigen Werte extrahieren und die entsprechenden Daten in horizontale Zeilen umwandeln. Gehen Sie dazu wie folgt vor:

1. Geben Sie diese Array-Formel ein: = INDEX ($ A $ 2: $ A $ 16, MATCH (0, COUNTIF ($ D $ 1: $ D1, $ A $ 2: $ A $ 16), 0)) in eine leere Zelle, z. B. D2, und drücken Sie Umschalt + Strg + Eingabetaste Tasten zusammen, um das richtige Ergebnis zu erhalten, siehe Screenshot:

doc transponieren eindeutige Werte 2

Hinweis: In der obigen Formel A2: A16 ist die Spalte, in der Sie die eindeutigen Werte von und auflisten möchten D1 ist die Zelle über dieser Formelzelle.

2. Ziehen Sie dann den Füllpunkt nach unten in die Zellen, um alle eindeutigen Werte zu extrahieren (siehe Abbildung):

doc transponieren eindeutige Werte 3

3. Und dann geben Sie diese Formel in Zelle E2 ein: =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)und denken Sie daran, zu drücken Umschalt + Strg + Eingabetaste Tasten, um das Ergebnis zu erhalten, siehe Screenshot:

doc transponieren eindeutige Werte 4

Hinweis: In der obigen Formel: B2: B16 sind die Spaltendaten, die Sie transponieren möchten. A2: A16 ist die Spalte, in die Sie die Werte basierend auf und transponieren möchten D2 enthält den eindeutigen Wert, den Sie in Schritt 1 extrahiert haben.

4. Ziehen Sie dann den Füllpunkt rechts neben die Zellen, in denen Sie die transponierten Daten auflisten möchten, bis 0 angezeigt wird (siehe Abbildung):

doc transponieren eindeutige Werte 5

5. Ziehen Sie dann den Füllpunkt weiter nach unten in den Zellenbereich, um die transponierten Daten wie im folgenden Screenshot zu erhalten:

doc transponieren eindeutige Werte 6


Möglicherweise sind die Formeln für Sie komplex. Hier können Sie den folgenden VBA-Code ausführen, um das gewünschte Ergebnis zu erzielen.

1. Halten Sie die Taste gedrückt ALT + F11 Schlüssel zum Öffnen der Microsoft Visual Basic für Applikationen Fenster.

2. Klicken Sie Insert > Modulund fügen Sie den folgenden Code in das Feld ein Modul Fenster.

VBA-Code: Transponieren Sie Zellen in einer Spalte basierend auf eindeutigen Werten in einer anderen Spalte:

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. Dann drücken F5 Wenn Sie die Taste drücken, um diesen Code auszuführen, wird ein Eingabeaufforderungsfeld angezeigt, das Sie daran erinnert, den Datenbereich auszuwählen, den Sie verwenden möchten. Siehe Screenshot:

doc transponieren eindeutige Werte 7

4. Und dann klick OK Wenn Sie auf die Schaltfläche klicken, wird ein weiteres Eingabeaufforderungsfeld angezeigt, das Sie daran erinnert, eine Zelle für das Ergebnis auszuwählen. Siehe Screenshot:

doc transponieren eindeutige Werte 8

6. Klicken Sie OK Schaltfläche, und die Daten in Spalte B wurden basierend auf eindeutigen Werten in Spalte A transponiert, siehe Screenshot:

doc transponieren eindeutige Werte 9


Wenn Sie Kutools for Excel, kombiniert die Erweiterte Zeilen kombinieren und Zellen teilen Dienstprogramme können Sie diese Aufgabe schnell ohne Formeln oder Code beenden.

Kutools for Excel : Mit mehr als 300 praktischen Excel-Add-Ins können Sie diese innerhalb von 30 Tagen ohne Einschränkung testen.

Nach der Installation Kutools for ExcelBitte gehen Sie wie folgt vor:

1. Wählen Sie den Datenbereich aus, den Sie verwenden möchten. (Wenn Sie die Originaldaten behalten möchten, kopieren Sie die Daten zunächst und fügen Sie sie an einem anderen Ort ein.)

2. Dann klick Kutoolen > Zusammenführen & Teilen > Erweiterte Zeilen kombinieren, siehe Screenshot:

3. In dem Zeilen basierend auf Spalte kombinieren Im Dialogfeld führen Sie bitte die folgenden Vorgänge aus:

(1.) Klicken Sie auf den Spaltennamen, auf dessen Grundlage Sie Daten transponieren möchten, und wählen Sie Primärschlüssel;

(2.) Klicken Sie auf eine andere Spalte, die Sie transponieren möchten, und klicken Sie auf Kombinieren Wählen Sie dann ein Trennzeichen, um die kombinierten Daten wie Leerzeichen, Komma und Semikolon zu trennen.

doc transponieren eindeutige Werte 11

4. Dann klick Ok Schaltfläche, wurden die Daten in Spalte B in einer Zelle basierend auf der Spalte A zusammengefasst, siehe Screenshot:

doc transponieren eindeutige Werte 12

5. Wählen Sie dann die kombinierten Zellen aus und klicken Sie auf Kutoolen > Zusammenführen & Teilen > Zellen teilen, siehe Screenshot:

6. In dem Zellen teilen Dialogfeld auswählen In Spalten teilen unter dem Typ Wählen Sie dann das Trennzeichen aus, das Ihre kombinierten Daten trennt (siehe Abbildung):

doc transponieren eindeutige Werte 14 14

7. Dann klick Ok Klicken Sie auf die Schaltfläche, und wählen Sie eine Zelle aus, um das Teilungsergebnis in das ausgeblendete Dialogfeld einzufügen. Siehe Screenshot:

doc transponieren eindeutige Werte 15

8. Klicken Sie OK, und Sie erhalten das Ergebnis nach Bedarf. Siehe Screenshot:

doc transponieren eindeutige Werte 16

Laden Sie Kutools for Excel jetzt herunter und testen Sie es kostenlos!


Kutools for Excel: Mit mehr als 300 praktischen Excel-Add-Ins können Sie es innerhalb von 30 Tagen ohne Einschränkung testen. Jetzt herunterladen und kostenlos testen!

Die besten Tools für die Office-Produktivität

Kutools for Excel löst die meisten Ihrer Probleme und erhöht Ihre Produktivität um 80%

  • Wiederverwendung: Schnell einfügen komplexe Formeln, Diagramme und alles, was du vorher benutzt hast; Zellen verschlüsseln mit Passwort; Mailingliste erstellen und E-Mails senden ...
  • Super Formelriegel (leicht mehrere Textzeilen und Formeln bearbeiten); Layout lesen (leichtes Lesen und Bearbeiten einer großen Anzahl von Zellen); In gefilterten Bereich einfügen...
  • Zellen / Zeilen / Spalten zusammenführen ohne Daten zu verlieren; Inhalt geteilter Zellen; Kombinieren Sie doppelte Zeilen / Spalten... doppelte Zellen verhindern; Bereiche vergleichen...
  • Wählen Sie Duplizieren oder Eindeutig Reihen; Wählen Sie Leere Zeilen (alle Zellen sind leer); Super Find und Fuzzy Find in vielen Arbeitsmappen; Zufällige Auswahl ...
  • Exakte Kopie Mehrere Zellen ohne Änderung der Formelreferenz; Referenzen automatisch erstellen zu mehreren Blättern; Aufzählungszeichen einfügen, Kontrollkästchen und mehr ...
  • Text extrahieren, Text hinzufügen, Nach Position entfernen, Leerzeichen entfernen;; Paging-Zwischensummen erstellen und drucken; Inhalt und Kommentare zwischen Zellen konvertieren...
  • Superfilter (Speichern und Anwenden von Filterschemata auf andere Blätter); Erweiterte Sortierung nach Monat / Woche / Tag, Häufigkeit und mehr; Spezialfilter fett, kursiv ...
  • Kombinieren Sie Arbeitsmappen und Arbeitsblätter;; Tabellen basierend auf Schlüsselspalten zusammenführen; Daten in mehrere Blätter aufteilen; Batch-Konvertierung von xls, xlsx und PDF...
  • Mehr als 300 leistungsstarke Funktionen. Unterstützt Office / Excel 2007-2021 und 365. Unterstützt alle Sprachen. Einfache Bereitstellung in Ihrem Unternehmen oder Ihrer Organisation. 30-tägige kostenlose Testversion mit allen Funktionen. 60 Tage Geld-zurück-Garantie.
kte tab 201905

Office Tab Bringt die Oberfläche mit Registerkarten in Office und erleichtert Ihnen die Arbeit erheblich

  • Aktivieren Sie das Bearbeiten und Lesen von Registerkarten in Word, Excel und PowerPoint, Publisher, Access, Visio und Project.
  • Öffnen und erstellen Sie mehrere Dokumente in neuen Registerkarten desselben Fensters und nicht in neuen Fenstern.
  • Steigert Ihre Produktivität um 50 % und reduziert jeden Tag Hunderte von Mausklicks für Sie!
officetab unten
Kommentare (56)
Noch keine Bewertungen. Bewerten Sie als Erster!
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Wie würde ich in die entgegengesetzte Richtung gehen? Von mehreren Spalten in eine einzelne Spalte? Danke im Voraus! Tim
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Das war fantastisch. Ich hatte ein Excel mit etwa 2000 eindeutigen Werten in Zeile A und hätte diese Übung ohne Ihre Hilfe nicht geschafft. Vielen herzlichen Dank.
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Der erste Schritt selbst schlägt fehl =INDEX($A$2:$A$16, MATCH(0, COUNTIF($D$1:$D1, $A$2:$A$16), 0)) gibt den Fehler Wert nicht verfügbar
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Ich möchte nur das Gegenteil tun. Als hätte ich bereits das Endergebnis und möchte den ersten Schritt erreichen.
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Ich suche das gleiche
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Haben Sie eine Lösung für das gegenteilige Szenario gefunden? Vielen Dank!
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Ich möchte auch das Gegenteil tun. Irgendeine Lösung, die Sie haben, Herren?
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo Leute,
Um das gegenteilige Ergebnis basierend auf dem Beispiel dieses Artikels zu erhalten, können Sie den folgenden VBA-Code anwenden: (Hinweis: Schließen Sie bei der Auswahl des Datenbereichs, den Sie transponieren möchten, bitte die Kopfzeile aus.)

Sub-TransposeUnique_2()
Dim xLRow, xLCount As Long
Dim xRg als Bereich
Dim xOutRg als Bereich
Dim xObjRRg als Bereich
Dim xTxt als Zeichenfolge
Dim xCount As Long
Dim xVRg als Bereich
On Error Resume Next
xTxt = ActiveWindow.RangeSelection.Adresse
Set xRg = Application.InputBox("bitte Datenbereich auswählen:", "Kutools for Excel", xTxt, , , , , 8)
Setze xRg = Application.Intersect(xRg, xRg.Worksheet.UsedRange)
Wenn xRg nichts ist, dann beenden Sie Sub
If (xRg.Rows.count < 2) Oder _
(xRg.Areas.count > 1) Dann
MsgBox "Ungültige Auswahl", , "Kutools für Excel"
Exit Sub
End If
Set xOutRg = Application.InputBox("bitte Ausgabebereich auswählen (eine Zelle angeben):", "Kutools for Excel", xTxt, , , , , 8)
Wenn xOutRg nichts ist, dann beenden Sie Sub
Application.ScreenUpdating = False
xLCount = xRg.Columns.count
Für xLRow = 1 bis xRg.Rows.count
Setze 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 = Falsch
Range(Cells(xOutRg.Row, xOutRg.Column), Cells(xOutRg.Row + xObjRRg.count - 1, xOutRg.Column)).Value = xRg.Cells(xLRow, 1).Value
Setze xOutRg = xOutRg.Offset(RowOffset:=xObjRRg.count)
Weiter
Application.ScreenUpdating = True
End Sub
Dieser Kommentar wurde vom Moderator auf der Website minimiert
So führen Sie die Transponierung durch, wenn die B-Spalte keine eindeutigen Werte hat, diese Werte aber dennoch benötigt
KTE100
KTE100
Angenommen, es handelt sich um zwei verschiedene Transaktionen
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo Didin,

Können Sie Ihr Problem klarer oder detaillierter beschreiben?
Sie können einen Beispiel-Screenshot für Ihr Problem einfügen.
Vielen Dank!
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo,
Könnten Sie mir bitte bei der folgenden Anforderung helfen?
Produkt ----- bestellen
KTE ------ 100KTE ------ 200KTO ------ 300KTO ------ 300
erwartete Ausgabe
Produkt ----- Bestellung ----- Bestellung ------ Bestellung
KTE ------ 100 ------ 200
KTO ------ 300 ------ 300







Dieser Kommentar wurde vom Moderator auf der Website minimiert
Das gleiche brauche ich auch. Ich möchte 100 zweimal anzeigen, wenn es in den Daten ist
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Können Sie dafür eine Formel vorschlagen?
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Haben Sie jemals eine Antwort/Lösung zu dieser Herausforderung erhalten? Ich habe das gleiche.
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Gibt es eine Möglichkeit, dies umgekehrt zu tun? Dh Daten in Zeilen unterschiedlicher Länge und damit Sortierung in zwei Spalten? Siehe Anhang.
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Ich möchte auch doppelte Werte transponieren (alle Werte - eindeutig + doppelt) und nicht nur eindeutige Werte. Kannst du dafür auch die Formel geben.
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Ich brauche das gleiche
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Haben Sie jemals eine Antwort/Lösung zu dieser Herausforderung erhalten? Ich habe das gleiche.
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Mit folgender Formel:

=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)

Wie kann ich die Daten mit ungefähren Übereinstimmungen transponieren? Angenommen, ich möchte alle Werte aus Spalte B extrahieren, die mit den ersten 9 Zeichen / Ziffern aus Spalte A übereinstimmen? Spalte B hat 11 Zeichen, A nur 9. Danke!
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Ich muss genau das Gegenteil davon tun. Ich habe viele viele Spalten, die einer Zeilen-ID zugeordnet sind, und ich möchte sie in zwei Spalten einfügen
zum Beispiel habe ich
Zeilen-ID, Wert, Wert1, Wert2, Wert3, Wert4, Wert..225
100, Delfin, 255, 9--, Sarah, Jameson, ....
179, Router, Flut, Jason, 89, Nase



Ich möchte, dass es so aussieht
100, Delphin
100, 255
100, 9--
100, Sara
100, Jameson
179, Router
179, Hochwasser
179, Jason
179, 89
179, Nase
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo Dave,
Um Ihr Problem zu lösen, verwenden Sie bitte den folgenden VBA-Code: (Hinweis: Wenn Sie den Datenbereich auswählen, den Sie transponieren möchten, schließen Sie bitte die Kopfzeile aus.)

Sub-TransposeUnique_2()
Dim xLRow, xLCount As Long
Dim xRg als Bereich
Dim xOutRg als Bereich
Dim xObjRRg als Bereich
Dim xTxt als Zeichenfolge
Dim xCount As Long
Dim xVRg als Bereich
On Error Resume Next
xTxt = ActiveWindow.RangeSelection.Adresse
Set xRg = Application.InputBox("bitte Datenbereich auswählen:", "Kutools for Excel", xTxt, , , , , 8)
Setze xRg = Application.Intersect(xRg, xRg.Worksheet.UsedRange)
Wenn xRg nichts ist, dann beenden Sie Sub
If (xRg.Rows.count < 2) Oder _
(xRg.Areas.count > 1) Dann
MsgBox "Ungültige Auswahl", , "Kutools für Excel"
Exit Sub
End If
Set xOutRg = Application.InputBox("bitte Ausgabebereich auswählen (eine Zelle angeben):", "Kutools for Excel", xTxt, , , , , 8)
Wenn xOutRg nichts ist, dann beenden Sie Sub
Application.ScreenUpdating = False
xLCount = xRg.Columns.count
Für xLRow = 1 bis xRg.Rows.count
Setze 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 = Falsch
Range(Cells(xOutRg.Row, xOutRg.Column), Cells(xOutRg.Row + xObjRRg.count - 1, xOutRg.Column)).Value = xRg.Cells(xLRow, 1).Value
Setze xOutRg = xOutRg.Offset(RowOffset:=xObjRRg.count)
Weiter
Application.ScreenUpdating = True
End Sub
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Danke, es funktioniert perfekt, du hast mir 2 Tage gespart! :)
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo Skyyang,
Bitte teilen Sie den Code für 3 Spalten. Unten ist das Beispiel:
Ich möchte die Daten wie folgt: yogesh@gmail.com Community 1 nur anzeigen Community 2 nur anzeigen ...... goyal@gmail.com Community 1 nur anzeigen Community 2 nur anzeigen ........

Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo, ygoyal,

Um Ihr Problem zu lösen, wenden Sie bitte den folgenden Code an:

Sub-TransposeUnique_2()

Dim xLRow, xLCount As Long

Dim xRg als Bereich

Dim xOutRg als Bereich

Dim xObjRRg als Bereich

Dim xTxt als Zeichenfolge

Dim xCount As Long

Dim xVRg als Bereich

Dim xC, xI, xI1, xI2 als Integer

On Error Resume Next

xTxt = ActiveWindow.RangeSelection.Adresse

Set xRg = Application.InputBox("bitte Datenbereich auswählen:", "Kutools for Excel", xTxt, , , , , 8)

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

Wenn xRg nichts ist, dann beenden Sie Sub

Wenn (xRg.Rows.Count < 2) oder _

(xRg.Areas.Count > 1) Dann

MsgBox "Ungültige Auswahl", , "Kutools für Excel"

Exit Sub

End If

Set xOutRg = Application.InputBox("bitte Ausgabebereich auswählen (eine Zelle angeben):", "Kutools for Excel", xTxt, , , , , 8)

Wenn xOutRg nichts ist, dann beenden Sie Sub

Application.ScreenUpdating = False

xLCount = xRg.Columns.Count

Für xLRow = 1 bis xRg.Rows.Count

Setze xObjRRg = Range(xRg.Cells(xLRow, 2), xRg.Cells(xLRow, xLCount)).SpecialCells(xlCellTypeConstants)

On Error Resume Next

xC = (xObjRRg.Count Mod 2)

Wenn xC <> 0 Dann

xC = Int(xObjRRg.Count / 2) + 1

sonst

xC = Int(xObjRRg.Count / 2)

End If

xI1 = 1

xI2 = 2

Für xI = 1 bis xC

Range(xObjRRg.Item(xI1), xObjRRg.Item(xI2)).Kopieren

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

Application.CutCopyMode = Falsch

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

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

xI1 = xI1 + (2)

xI2 = xI2 + (2)

Weiter

Weiter

Application.ScreenUpdating = True

End Sub



Bitte versuchen Sie es, ich hoffe, es kann Ihnen helfen!
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo Bro, Der Code funktioniert umgekehrt. Bitte beziehen Sie sich auf den beigefügten Screenshot der Anforderung. Die verfügbaren Daten sind zeilenweise und möchten die Daten in Spalten transponieren.
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo, ygoyal,
Entschuldigen Sie die späte Antwort, wenden Sie bitte den folgenden Code an, bitte versuchen Sie es!

Subtranspositioneinzigartig()

'updateby Extendoffice

xLRow so lange dimmen

Dim ich als lang

Dim xCrit als Zeichenfolge

Dim xCol als neue Kollektion

Dim xRg als Bereich

Dim xOutRg als Bereich

Dim xTxt als Zeichenfolge

Dim xCount As Long

Dim xVRg als Bereich

Dim xFRg, xSRg, xCRg als Bereich

On Error Resume Next

xTxt = ActiveWindow.RangeSelection.Adresse

Set xRg = Application.InputBox("bitte Datenbereich auswählen(nur 3 Spalten):", "Kutools for Excel", xTxt, , , , , 8)

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

Wenn xRg nichts ist, dann beenden Sie Sub

Wenn (xRg.Columns.Count <> 3) oder _

(xRg.Areas.Count > 1) Dann

MsgBox "der verwendete Bereich ist nur ein Bereich mit zwei Spalten", , "Kutools for Excel"

Exit Sub

End If

Set xOutRg = Application.InputBox("bitte Ausgabebereich auswählen (eine Zelle angeben):", "Kutools for Excel", xTxt, , , , , 8)

Wenn xOutRg nichts ist, dann beenden Sie Sub

Setze xOutRg = xOutRg.Range(1)

xLRow = xRg.Rows.Count

Für i = 2 bis xLRow

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

Weiter

Application.ScreenUpdating = False

Application.ScreenUpdating = False

Für i = 1 bis xCol.Count

xCrit = xCol.Item(i)

xOutRg.Offset(i, 0) = xCrit

xRg.AutoFilter-Feld:=1, Kriterium1:=xCrit

Setze xVRg = xRg.Range("B2:B" & xLRow).SpecialCells(xlCellTypeVisible)

Wenn xVRg.Count > xCount dann xCount = xVRg.Count

Setze xSRg = xRg.Range("B2:B" & xLRow).SpecialCells(xlCellTypeVisible)

Setze xCRg = xOutRg.Offset(i, 1)

Für jedes xFRg in xSRg

xFRg.Copy

xCRg.PasteSpecial

xRg.Range("B1").Kopieren

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

xFRg.Offset(0, 1).Kopieren

Setze xCRg = xCRg.Offset(0, 1)

xCRg.PasteSpecial

xRg.Range("c1").Kopieren

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

Setze xCRg = xCRg.Offset(0, 1)

Weiter

Application.CutCopyMode = Falsch

Weiter

xRg.Item(1).Copy

xOutRg.PasteSpecial

xRg.AutoFilter

Application.ScreenUpdating = True

End Sub
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hey Bro, ich habe versucht, diesen Code zu verwenden, aber Excel bleibt hängen, wenn ich diesen Code ausführe, und konnte die Ausgabe des obigen Codes nicht sehen. Bitte schlagen Sie vor, was in diesem Fall zu tun ist.
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo,
Der Code funktioniert gut in meiner Arbeitsmappe, welche Excel-Version verwenden Sie?
Dieser Kommentar wurde vom Moderator auf der Website minimiert
MS Excel 2016
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Der Code funktioniert auch in meinem Excel 2016 einwandfrei, bitte versuchen Sie es zuerst mit einigen Daten mit kleinem Bereich.
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Habe auf 160 Platten getestet aber bei denen war noch Duplikat da.
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo Skyyang, ich liebe das, gibt es eine Chance, dass du es für vier Spalten zum Laufen bringst? Verwenden Sie wieder nur die ersten beiden als Vergleich, oder noch besser die Möglichkeit, die Anzahl der Spalten auszuwählen, bevor Sie sie auswählen? Ich habe mir Ihr Skript angesehen, hatte keine Ahnung, wie Sie dies erreichen können ...
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo Skyyang, ich liebe das, gibt es eine Chance, dass du es für vier Spalten zum Laufen bringst? Verwenden Sie wieder nur die ersten beiden als Vergleich, oder noch besser die Möglichkeit, die Anzahl der Spalten auszuwählen, bevor Sie sie auswählen? Ich habe mir Ihr Skript angesehen, hatte keine Ahnung, wie Sie dies erreichen können ...
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Bro, bitte helfen Sie dabei.
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo Bruder, ich warte immer noch auf deine Hilfe
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Genau wie Dave muss ich genau das Gegenteil davon tun. Tabelle 2 in Tabelle 1 transponieren. Eingabetabelle 2, Ausgabetabelle 1.
Dieser Kommentar wurde vom Moderator auf der Website minimiert
=INDEX($A$2:$A$16, MATCH(0, COUNTIF($D$1:$D1, $A$2:$A$16), 0)) funktionierte für mich, um die eindeutigen Werte einer Spalte in eine neue zu transponieren Spalte ABER ... gibt es eine Möglichkeit, eine Sortierfunktion einzugeben, sodass die neu erstellte Spalte in aufsteigender Reihenfolge transponiert wird?


Vielen Dank!
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Sie müssen dieselbe Ausgabe erhalten, aber für vordefinierte Spalten, die ausgewählt werden sollen, wäre ($A, $B) und Sie benötigen die Ausgabespalte Position auf $D$1.
Wenn jemand eine Idee hat, wäre das eine große Hilfe!!!!
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo, können wir jede Zeile hinzufügen und die Ausgabe in einer Spalte mit der obigen Funktionalität ausgeben.
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Also ich arbeite für eine Firma. Wir haben Spalten für Informationen wie Nachname, Vorname, Rang, Abschnitt, Telefonnummer, Adresse. Gibt es eine Möglichkeit, mit einer ähnlichen Formel die gesamte Infozeile nach Namen in eine Spalte zu transponieren?
Dieser Kommentar wurde vom Moderator auf der Website minimiert
=INDEX($A$2:$A$16, MATCH(0, COUNTIF($D$1:$D1, $A$2:$A$16), 0)) funktionierte für mich, um die eindeutigen Werte der A-Spalte in eine neue zu transponieren Spalte ABER ... gibt es eine Möglichkeit, alle Werte in Spalte B zu transponieren, wie unten angegeben:

Produktbestelldatum Produktbestellung Bestellung Bestellung Bestellung Bestellung Bestellung Bestellung
KTE 100 3/3/2019 KTE 100 100 100 200 100 150 100
KTO 150 3/3/2019 KTO 150 100 200 100 150 200
KTE 100 3/4/2019 BOT 150 100 200 150 100 200
KTO 100 3/4/2019 Nachnahme 200 150 100 150
KTO 200 3
KTE 100 3
BOT 150 3
BOT 100 3
KTO 100 3
KTE 200 3
BOT 200 3
KABELJAU 200 3
KTE 100 3
KTO 150 3
BOT 150 3
KTE 150 3
KABELJAU 150 3
BOT 100 3
BOT 200 3
Nachnahme 100 3/10/2019
KTO 200 3
Nachnahme 150 3/11/2019
KTE 100 3
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Das Makro hat nicht funktioniert. Es hat nur den Inhalt in Zelle A1 kopiert.
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Ich habe einen Datensatz in den Spalten A (eindeutige ID) - E. Jede Zeile enthält Daten basierend auf der ID#, es gibt mehrere Zeilen für jede ID#, aber ich möchte eine Zeile pro ID# mit allen anderen Daten in Spalten ( es wäre mindestens 5 Spalten lang und maximal 25 Spalten, je nachdem, wie viele jede eindeutige ID hat). Ich habe einen Code gefunden, aber er funktioniert nur für zwei Spalten. Ich musste die vier Spalten (ohne ID) verketten und nach dem Ausführen des Makros abgrenzen (viel Arbeit). Bei 15,000 Datenzeilen ist dies besonders zeitaufwändig. Gibt es ein endloses Spaltenmakro, das funktionieren würde? Vielen Dank im Voraus an alle für Ihre Hilfe!
ID-CODE ST-CODE# DATUM
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Ich habe einen Datensatz mit mehreren IDs in Spalte A und verbundenen Daten in Spalte B. Ich habe die obige Formel verwendet und sie ein wenig geändert, sodass ich die Zellen in Spalte B basierend auf der eindeutigen ID in eine Zeile transponiere daran in Spalte A gebunden. Die zur Identifizierung der eindeutigen IDs verwendete Formel lautet: =INDEX($A$2:$A$13409, MATCH(0, COUNTIF($D$1:$D1, $A$2:$A$13409), 0)). Die zum Transponieren verwendete Formel lautet: =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"). Beide im Artikel angegeben, nur leicht verändert.

Das Problem ist, dass mein Datensatz in Spalte B Duplikate enthält, die manchmal nacheinander erscheinen, und ich brauche alle Werte in der Spalte, die in den Zeilen dargestellt werden müssen.

Das angehängte Bild ist das, was die Tabelle zeigen soll (dies ist eine kleine Stichprobengröße, der wahre Datensatz hat über 13,000 Einträge). Was jetzt passiert ist, wenn ein Wiederholungswert angetroffen wird, wird er nicht gezählt.
dh Zeile 9 für ID 11980 zeigt jetzt nur 0 -31.79 -0.19 -0.74 N/AN/A .... wenn ich stattdessen 0 0 -31.79 -0.19 -0.74 0 0 N/AN/A anzeigen muss. ...

Gibt es eine Möglichkeit, dieses Problem zu umgehen und zu beheben?

Vielen Dank im Voraus!
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Haben Sie jemals eine Antwort/Lösung zu dieser Herausforderung erhalten? Ich habe das gleiche.
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Ich habe einen Datensatz mit 3 Spalten, die unten dargestellt sind:



Spalte A Spalte B Spalte C



Land1 Jahr1 Wert1

Land1 Jahr2 Wert2

Land1 Jahr3 Wert3,



Land2 Jahr1 Wert1

Land2 Jahr3 Wert3,

...........



Ich muss diese 3 Spalten in einer Tabelle wie dieser kombinieren:

Jahr1 Jahr2 Jahr3 .................................. JahrX



Land1 Wert1 Wert2 Wert3

Land2 Wert1 #Fehlender Wert3

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

LandX Wertx .................





Das Problem, mit dem ich konfrontiert bin, ist, dass ich für einige Daten in Spalte A keine Werte für jedes Jahr habe, nur für einige. (Zum Beispiel hat Land 2 fehlende Werte für Jahr 2)





Gibt es eine Möglichkeit, dieses Problem zu umgehen und zu beheben?



Vielen Dank im Voraus!
Dieser Kommentar wurde vom Moderator auf der Website minimiert
können Sie bitte den Code teilen, wenn statt 2 1 Spalten kopiert werden sollen. Unten ist das Beispiel.
Es sind noch keine Kommentare vorhanden
Mehr laden
Hinterlassen Sie Ihre Kommentare
Als Gast posten
×
Bewerte diese Nachricht:
0   Figuren
Vorgeschlagene Standorte

Folgen Sie uns

Copyright © 2009 - www.extendoffice.com. | Alle Rechte vorbehalten. Unterstützt von ExtendOffice. | Sitemap
Microsoft und das Office-Logo sind Marken oder eingetragene Marken der Microsoft Corporation in den USA und / oder anderen Ländern.
Geschützt durch Sectigo SSL