web-dev-qa-db-fra.com

Comment insérer automatiquement une ligne vide après un groupe de données

J'ai créé un exemple de tableau ci-dessous, assez similaire à mon tableau dans Excel pour servir à illustrer la question. Je veux simplement ajouter une ligne après chaque donnée distincte dans la colonne1 (plus simple, en utilisant Excel, merci).

_

TABLEAU ACTUEL:

column1   |   column2   |  column3
----------------------------------
  A       |     small   |  blue
  A       |     small   |  orange
  A       |     small   |  yellow
  B       |     med     |  yellow
  B       |     med     |  blue
  C       |     large   |  green
  D       |     large   |  green
  D       |     small   |  pink

_

TABLE DÉSIRÉE

Remarque: la ligne vide après chaque colonne distincte1

column1   |   column2   |  column3
----------------------------------
  A       |     small   |  blue
  A       |     small   |  orange
  A       |     small   |  yellow

  B       |     med     |  yellow
  B       |     med     |  blue

  C       |     large   |  green

  D       |     large   |  green
  D       |     small   |  pink
5
Ben

Cela fait exactement ce que vous demandez, vérifie les lignes et insère une ligne vide vide à chaque changement dans la colonne A:

sub AddBlankRows()
'
dim iRow as integer, iCol as integer
dim oRng as range

set oRng=range("a1")

irow=oRng.row
icol=oRng.column

do 
'
if cells(irow+1, iCol)<>cells(irow,iCol) then
    cells(irow+1,iCol).entirerow.insert shift:=xldown
    irow=irow+2
else
    irow=irow+1
end if
'
loop while not cells (irow,iCol).text=""
'
end sub

J'espère que ça vous aide à commencer, faites le nous savoir!

Philippe

15
Our Man in Bananas

Deviner.

Étape 1

Placez une nouvelle colonne à gauche de column1 et copiez-collez la formule suivante

= B2 = B3

= B3 = B4

= B4 = B5

... tout en bas (supposons que la colonne B soit la colonne 1 de la question initiale).

Cette formule détermine si la ligne suivante est une nouvelle valeur dans colonne1 ou non. Désopérant sur le résultat, vous aurez VRAI ou FAUX. Copier et coller ces résultats sous forme de valeurs, puis permutez "FALSE" pour nil et "TRUE" pour 0,5

Étape 2

Ajoutez ensuite cette colonne remplie de 0,5 seulement à la colonne1, ce qui donnera le tableau suivant:

  newcolumn0  |   column1 ("B") |   column2   |  column3
-----------------------------------------------------
              |     1           |     small   |  blue
              |     1           |     small   |  orange
      1.5     |     1           |     small   |  yellow
              |     2           |     med     |  yellow
      2.5     |     2           |     med     |  blue
      3.5     |     3           |     large   |  green
              |     4           |     large   |  green
      4.5     |     4           |     small   |  pink

Étape 3

Enfin, copiez et collez les valeurs de newcolumn0 juste en dessous des valeurs de column1, puis triez le tableau par column1. Une ligne vide apparaît entre chaque nombre entier distinct dans column1. Le tableau ressemble à ceci:

    newcolumn0   |  column1 ("B")  |   column2       |  column3
---------------------------------------------------------------
                 |     1           |     small   |  blue
                 |     1           |     small   |  orange
        1.5      |     1.5         |             |
                 |     1           |     small   |  yellow
                 |     2           |     med     |  yellow
                 |     2           |     med     |  blue
        2.5      |     2.5         |             |
                 |     3           |     large   |  green
        3.5      |     3.5         |             |
                 |     4           |     large   |  green
                 |     4           |     small   |  pink
        4.5      |     4.5         |             |

Solutions alternatives (toujours pas de VBA)

  1. Mettez une valeur de 1 Colonne 1, Ligne 2 (supposons qu'il s'agisse de A2)
  2. Mettez cette formule en A3 =IF(B3=B2,A2,A2+1) et copiez-collez cette formule pour le reste de la colonne 2
  3. Copiez et collez ensuite toutes les valeurs de la colonne 1 dans une nouvelle feuille Excel temporaire, supprimez les doublons, puis ajoutez 0,5 à tous les nombres, puis collez ces valeurs sous les valeurs de la feuille de calcul d'origine sous les données de la colonne 1, collez toutes les données de la colonne en tant que valeurs et ensuite trier par cette colonne, supprimez la feuille Excel temporaire
1
Ben

Sélectionnez votre tableau, y compris les étiquettes de colonne, DATA> Outline-Total, à chaque changement dans: column1, utilisez la fonction: Count, ajoutez le sous-total à: column3, cochez Remplacer les sous-totaux actuels et Résumé sous les données, OK. 

Filtrez et sélectionnez pour Colonne1, Filtres de texte, Contient ..., Nombre, OK. Sélectionnez tous les éléments visibles en dehors des étiquettes et supprimez le contenu. Supprimez le filtre et, si vous le souhaitez, dissociez les lignes.

1
pnuts

Cela ne fonctionnera pas si les données ne sont pas séquentielles (1 2 3 4 mais 5 7 3 1 5) car dans ce cas, vous ne pouvez pas les trier. 

Voici comment je résous ce problème pour moi:

Colonne Données initiales devant contenir 5 lignes entre chaque numéro - 5 4 6 8 9.

Colonne B- 1 2 3 4 5 (Le dernier chiffre représente le nombre de lignes vides que vous devez placer entre les chiffres de la colonne A) copier-coller 1 -5 dans la colonne B aussi longtemps que vous avez des numéros dans la colonne A.

Passez à la colonne D, dans le type D1 1. Dans D2, tapez cette formule: =IF(B2=1,1+D1,D1)

Retour à la colonne C - dans la cellule C1, tapez cette formule - =IF(B1=1,INDIRECT("a"&(D1)),""). Faites-le glisser et nous avons terminé. Maintenant, dans la colonne C, nous avons la même séquence de chiffres que dans la colonne A, distribuée séparément par 4 rangées.

1
Arunas

Juste une idée, si vous connaissez les catégories, comme petites, moyennes et grandes mentionnées ci-dessus ...

Au bas de la feuille, créez 3 lignes ne mentionnant que petites, moyennes et grandes, modifiez la police en blanc, puis effectuez le tri de manière alphabétique en plaçant une ligne vide entre chaque section.

0
Megan
  1. Insérer une colonne à gauche du tableau 'Control' 
  2. Numérotez les données de 1 à 1000 (en supposant qu'il y ait 1000 lignes) 
  3. Copiez le champ clé sur une autre feuille et supprimez les doublons. 
  4. Copiez les éléments de ligne uniques sur la feuille principale, après le 1000e enregistrement 
  5. Dans la colonne 'Contrôle', ajoutez le numéro 1001 à tous les enregistrements uniques. 
  6. Trier les données (y compris les enregistrements ajoutés), d'abord sur le champ clé, puis sur 'Contrôle' 
  7. Une ligne vide (avec les données dans le champ clé et 'Control') est ajoutée 
0
Kartik Kumar