2017-08-14 3 views
0

Ich habe anscheinend eine Arrayformula, die Duplikate für mich erzeugt.Arrayformula Duplikate in Google Tabellen erzeugen

Ich zeige Dir den Code in Spalte D und dann das Problem erklären:

=arrayformula(
if (C1225:C$1684="A",A1225:A$1684, 
if (C1225:C$1684="B",B1225:B$1684, 
if (C1225:C$1684="AB",{A1225:A$1684, B1225:B$1684},"")))) 

Wenn A oder B, sollte es den Inhalt von A oder B nehmen und es in D. setzt Also ich will Zelle E ist leer, wenn der Inhalt in C "AB" ist - nur dann möchte ich, dass zwei Zellen mit den Daten von A und B gefüllt werden.

Im Moment wird A zweimal ausgegeben.

For No One|No Reply|ab|For No One|No Reply 
Across The Universe (Let It Be Naked...)|The End|a|Across The Universe (Let It Be Naked...)|Across The Universe (Let It Be Naked...) 
All You Need Is Love|Twist And Shout|b|Twist And Shout|Twist And Shout 

Also die erste Zeile ist in Ordnung, aber die zweiten beiden generieren unerwünschte Duplikate.

Antwort

2

Das Problem, das Sie erleben, ist, weil die ARRAYFORMULA alle Antworten ein Array von 2 Elementen macht. Da das Endergebnis diese Größe hat, müssen alle Ergebnisse die gleiche Größe haben.

dieses Versuchen, die Bereiche ändern Ihre Bedürfnisse sowie die 10 entsprechen:

=arrayformula(
if (C2:C$11="A",{A2:A$11, transpose(split(rept(", ", 10), ",", TRUE))}, 
if (C2:C$11="B",{B2:B$11, transpose(split(rept(", ", 10), ",", TRUE))}, 
if (C2:C$11="AB",{A2:A$11, B2:B$11},)))) 

Die rept („“, 10) Abschnitt erstellt eine Textzeichenfolge, die 10-mal „“ wiederholt ist, oder ",,,,,,,,,"

Split() teilt das dann in einen Eintrag für jedes Komma auf und entfernt das Komma, also in diesem Fall eine Reihe von Leerzeichen. Die TRUE teilt dies dem Komma für jedes Auftreten Split zu tun, so wird es:

split(", , , , , , , , , , ", ",", TRUE) 

ich diese dann in Zeilen statt Spalten verwenden transponieren() zu ändern. Dies muss die gleiche Anzahl von Zeilen wie die anderen Elemente im Array sein ich die Schaffung bin die Halterungen mit so im Grunde bekommen I: {A2: A $ 10, [Make_Blank_Entries_For_Each_Row]}

Also, wenn ich meine Mathe tat richtig, Sie sollten verwenden:

=arrayformula(
if (C1225:C$1684="A",{A1225:A$1684, transpose(split(rept(", ", 460), ",", TRUE))}, 
if (C1225:C$11="B",{B1225:B$1684, transpose(split(rept(", ", 460), ",", TRUE))}, 
if (C1225:C$11="AB",{A1225:A$1684, B2:B$11},)))) 
Verwandte Themen