OFFSET-Funktion in Excel nur für nicht duplizierte Daten

OFFSET-Funktion in Excel nur für nicht duplizierte Daten

Ich möchte die OFFSET-Funktion verwenden, um die Daten in einer Spalte zu verdreifachen. Ich habe jedoch einige doppelte Daten (manchmal mehr als 2 Wiederholungen), sodass ich nur einen davon verdreifachen möchte, nicht beide, und den anderen behalten möchte. Hier sind meine Daten und die Funktion:

 =OFFSET($A$2,INT((ROWS($A$2:A2)-1)/3),0)
               A
 2      5YJSA3H17EFP49729
 3      5YJSA3H17EFP41128
 4      5YJSA3H17EFP30954
 5      5YJSA3H17EFP30954
 6      5YJSA3H17EFP30212
 7      5YJSA3H17EFP30050

In diesem Beispiel wird 5YJSA3H17EFP30954 dupliziert, aber ich möchte nur bei einem davon OFFSET ausführen und das andere behalten, also möchte ich 4 Wiederholungen davon haben.

Antwort1

Wenn Sie diese in B2 und C2 eingeben

B2
=WENNFEHLER(WENN(UND(A2=A1;B1=3);1;WENN(UND(A2=A1;B1<3);0;3));3)

C2
=WENNFEHLER(OFFSET(B2;-1;0)+OFFSET(C2;-1;0);0)

und füllen Sie dann die Spalten B und C damit aus. Sie erhalten eine Tabelle für:
B) wie oft sich jedes Element (in der gleichen Zeile) in Spalte C wiederholen soll
) und C) aus welcher A1-Offset-Zeile der wiederholte Wert ausgewählt werden soll.

Ich glaube nicht, dass dies mit Formeln erreicht werden kann.

Es muss VBA verwendet werden. Unten finden Sie ein „Sub“ (mit der oben ausgewählten Logik/Formeln), das die angeforderte Tabelle erstellt, wenn Ihre Tabelle in A1 beginnt.

SubcreateDupeTable()

  r = 1: c = 1 ' Annahme: für den Zugriff auf A1 mit Cells(r,c)
  br = 1: bc = c + 1 ' wo mit dem Einfügen von Kopien begonnen werden soll, Cells(br,bc)

 ' Wert in "B1" (oben) immer 3
  pz = 3

  Ausführen, solange Zellen (r, c).Wert <> ""
    a1 = Zellen(r, c).Wert
    a2 = Zellen(r + 1, c).Wert
    b1 = pz
    Wenn a2 = a1 und b1 = 3, dann
      Z = 1
    Anders
      Wenn a2 = a1 und b1 < 3, dann
        Z = 0
      Anders
        Z = 3
      Ende, wenn
    Ende, wenn

    pz = Z
    Ausführen, solange Z > 0
      Cells(br, bc).Value = Cells(r, c).Value ' kopiere einen Wert aus der Liste
      Z = Z - 1
      br = br + 1
    Schleife

    r = r + 1
  Schleife
End Sub

Das Ergebnis:

     AB
1 5YJSA3H17EFP49729 5YJSA3H17EFP49729
2 5YJSA3H17EFP41128 5YJSA3H17EFP49729
3 5YJSA3H17EFP30954 5YJSA3H17EFP49729
4 5YJSA3H17EFP30954 5YJSA3H17EFP41128
5 5YJSA3H17EFP30212 5YJSA3H17EFP41128
6 5YJSA3H17EFP30050 5YJSA3H17EFP41128
7 5YJSA3H17EFP30954
8 5YJSA3H17EFP30954
9 5YJSA3H17EFP30954
10 5YJSA3H17EFP30954
11 5YJSA3H17EFP30212
12 5YJSA3H17EFP30212
13 5YJSA3H17EFP30212
14 5YJSA3H17EFP30050
15 5YJSA3H17EFP30050
16 5YJSA3H17EFP30050

verwandte Informationen