2016-11-21 2 views
1

J'ai du mal à comprendre cela sur moi-même et je pense qu'il est une combinaison de ne pas savoir une tonne de VBA et peut-être pas demander à Google avec les mots clés. J'ai des données qui sont divisées en sections avec les titres dupliqués pour chaque section. Ce que je veux aussi faire est de créer un autre écouteur au-dessus du doublon qui est une combinaison de texte et de diverses cellules provenant des nouvelles sections. Chaque nouvel en-tête dépendra des données dans sa propre section. Si je devais utiliser la formule Concatenate pour la 1re section nouvellement créée, ce serait:VBA créer des titres avec chaque nouvelle section

=CONCATENATE("Contract# ",J3," -- SiteID# ",L3) 

Le code que j'ai pour insérer les lignes vides après chaque changement dans une colonne spécifique est ci-dessous. Il duplique également l'en-tête d'origine pour chaque nouvelle section. Je pense pouvoir combiner le code que je cherche avec ce que j'ai. À moins qu'il ne soit simplement plus facile de faire une boucle dans chaque section et d'insérer la nouvelle ligne au-dessus de chacune d'elles?

lr = Range("A" & Rows.Count).End(xlUp).Row 
For i = lr To 3 Step -1 
    If Cells(i - 1, "J").Value <> Cells(i, "J").Value Then 
     Cells(i, "J").Resize(2).EntireRow.Insert 
     Rows(1).Copy Destination:=Rows(i + 2) 
    End If 
Next i 

Désolé. Je savais que j'oubliais quelque chose. Voici une capture d'écran des données. Gardez à l'esprit que la seule constante est le nombre de colonnes contenant des données. Le nombre de sections et le nombre de lignes dans chaque section varient d'un jour à l'autre.

enter image description here

Comme demandé, voici un petit échantillon de ce que je l'aime ressembler.

enter image description here

+0

Pouvez-vous fournir une capture d'écran des données? –

+0

vient d'ajouter la capture d'écran. Désolé pour ça! –

Répondre

2

Je ne pense pas qu'il serait plus facile de boucle à travers chaque section - Je pense que vous êtes sur la bonne voie.

Cela peut ne pas être exactement ce que vous voulez, mais nous espérons qu'il vous donnera une idée:

For i = lr To 3 Step -1 
    If Cells(i - 1, "J").Value <> Cells(i, "J").Value And Cells(i, "J").Value <> "" Then 
    Cells(i, "J").Resize(2).EntireRow.Insert 
    Rows(1).Copy Destination:=Rows(i + 1) 
    Range("A" & i).Value2 = "Contract# " & Range("J" & i + 2).Value2 & _ 
     " -- SiteID# " & Range("L" & i + 2).Value2 
    End If 
Next i 

Cela suppose le champ que vous voulez est dans la ligne d'en-tête dans la colonne A, au-dessus de la ligne d'en-tête copié.

- EDIT 22/11/2016 -

les commentaires de Per OP de vouloir conserver deux lignes vides, cela ne devrait y parvenir.

For i = lr To 3 Step -1 
    If Cells(i - 1, "J").Value <> Cells(i, "J").Value And Cells(i, "J").Value <> "" Then 
    Cells(i, "J").Resize(4).EntireRow.Insert 
    Rows(1).Copy Destination:=Rows(i + 3) 
    Range("A" & i + 2).Value2 = "Contract# " & Range("J" & i + 4).Value2 & _ 
     " -- SiteID# " & Range("L" & i + 4).Value2 
    End If 
Next i 

Des modifications mineures peuvent être nécessaires pour répondre aux besoins spécifiques, mais nous espérons que cela représente 90%.

+0

Génial! J'ai pensé que je pourrais probablement ajouter une autre ligne à ce que j'avais. La seule chose que cela ne fait pas est de garder les 2 lignes vides entre les sections. J'aurais également besoin d'ajouter l'information sur le contrat et le siteID au-dessus de la 1ère section. Je pourrais peut-être jouer avec ça un peu, ce n'est que la première observation. Le code que j'ai posté à l'origine recherche le texte de différence dans la colonne J, puis insère 2 lignes vides, copiez la ligne d'en-tête de la ligne A au-dessus de chaque section. Juste au cas où je ne l'ai pas déjà fait clair! :) –

+0

Je pense que je comprends - juste pour être clair, pouvez-vous poster quatre lignes comme un exemple de sortie - la ligne de données et ce que vous voulez les trois lignes au-dessus de ressembler (même si l'un d'eux est le la prochaine rangée de données, que je ne ** pense ** pas mais qui veut être sûre). – Hambone

+0

La sortie d'échantillon a été fournie maintenant. Je vous remercie!!! –