Je veux merge 5 colonnes en une seule comme celle-ci:
1 4 7 10 13 2 5 8 11 14 3 6 9 12 15
pour ça
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
J'ai cette formule et j'essaie de l'adapter, mais ça échoue 🙁
= IF (ROW () <= COUNTA (A: A), INDEX (A: A, ROW ()), IF (ROW () <= COUNTA (A: B), INDEX (B: B, ROW () – COUNTA (A: A)), IF (ROW ()> COUNTA (A: C), "", INDEX (C: C, ROUE () – COUNTA (A: B)))))
- Comment puis-je get des valeurs à partir d'un file csv où certaines des cellules contiennent des virgules?
- Excel VBA SQL. Existe-t-il une limite sur les lignes qui peuvent être interrogées ou sur le contenu du jeu d'loggings?
- Excel forumla: CountifS + critères multiples + nombre distinct
- Largeur de la colonne de locking dans PhpExcel
- Trouver et replace la logique
L'instruction utilise 3 fonctions IF, car elle doit combiner 3 colonnes:
As tu des idées?
J'ai testé votre formule et cela fonctionne comme prévu, il se pourrait toutefois que vous mettiez votre formule dans l'une des colonnes que vous faites reference dans votre formule qui créera une reference circulaire.
En d'autres termes, essayez d'utiliser votre formule dans une colonne qui n'est pas A, B ou C et voyez ce qui se passe.
Note latérale: pour ce que vous essayez d'atteindre, je reorderais d'essayer de produire une macro VBA à la place, votre formule pourrait être assez longue et fiddly à mesure que vous ajoutez de plus en plus de colonnes où, en tant que simple macro, vous permettrait de faire quelque chose comme ça avec n'importe quel le nombre de colonnes.
Vous pouvez coller ceci dans un module de code
Public Function OneDimensionalRange(source As Range) Dim index As Integer index = Application.Caller.Row OneDimensionalRange = source.Cells(index).value End Function
Il sera disponible pour une fonction de feuille de calcul.
= OneDimensionalRange ($ A $ 3: $ E $ 3)
Vous pouvez utiliser la formule suivante tant que vos résultats ne sont pas dans la même ligne ou colonne que datatables d'origine (et pourraient être sur une autre feuille de calcul). En outre, la formule échouerait s'il y avait des cellules vides dans la première ligne ou la première colonne.
=IFERROR(INDEX($A$1:$E$3,MOD(ROWS($1:1)-1,COUNTA($A:$A))+1,INT((ROWS($1:1)-1)/COUNTA($A:$A))+1),"")
L'argument de la row
et l'argument de la column
pour la fonction INDEX
, si vous le déchirez, vous verrez qu'ils renvoient la séquence d'arguments appropriée. Toutefois, vous pouvez append n'importe quel nombre de colonnes ou de lignes au tableau.
Si vous souhaitez définir le tableau comme étant arbitrairement grand, donc si votre réseau réel peut se développer sans devoir modifier la formule, alors, sur une autre feuille de calcul (p. Ex. Sheet2), où myArtray
est, par exemple, Sheet1!$A$1:$Z$100
, essayez:
=IFERROR(IF(INDEX(myArray,MOD(ROWS($1:1)-1,COUNTA(Sheet1!$A:$A))+1,INT((ROWS($1:1)-1)/COUNTA(Sheet1!$A:$A))+1)="","", INDEX(myArray,MOD(ROWS($1:1)-1,COUNTA(Sheet1!$A:$A))+1,INT((ROWS($1:1)-1)/COUNTA(Sheet1!$A:$A))+1)),"")