Concaténer plusieurs plages à l'aide de vba
J'ai un certain nombre de plages à concaténer indépendamment et de mettre les valeurs de la concaténation des fourchettes de cellules différentes.
Je veux:
concaténer des valeurs dans la Plage A1:A10 et de mettre le résultat en F1
puis concaténer la Plage B1:B10 et mettre le résultat dans F2
puis concaténer la Plage C1:C10 et mettre le résultat dans F3 etc.
La macro suivante concatène la plage A1:A10 puis met les résultats en F1 (qui est ce que je veux). Cependant il stocke également les informations de la première concaténation dans la mémoire de sorte que quand il fait le à côté de concaténation, dans la cellule F2-je obtenir la concaténation des résultats de la F1 et F2 rejoint.
Sub concatenate()
Dim x As String
Dim Y As String
For m = 2 To 5
Y = Worksheets("Variables").Cells(m, 5).Value
'Above essentially has the range information e.g. a1:a10 in sheet variables
For Each Cell In Range("" & Y & "") 'i.e. range A1:A10
If Cell.Value = "" Then GoTo Line1 'this tells the macro to continue until a blank cell is reached
x = x & Cell.Value & "," 'this provides the concatenated cell value
Next
Line1:
ActiveCell.Value = x
ActiveCell.Offset(1, 0).Select
Next m
End Sub
- Juste avant
Next m
insérer simple déclaration:x=""
- Oh, Génial! J'ai perdu toute ma journée sur ce! Merci!!!! Merci!!!! Merci!!!! Merci!!!! Merci!!!! Merci!!!! Merci!!!! Merci!!!! Merci!!!! Merci!!!! Merci!!!! Merci!!!! Merci!!!!
Vous devez vous connecter pour publier un commentaire.
Voici mon ConcatenateRange. Il vous permet d'ajouter un élément de séparation, s'il vous plaît. Il est optimisé pour gérer de grandes portées, car il fonctionne par le dumping des données dans un tableau de type variant et de travailler avec elle dans VBA.
Que vous pouvez l'utiliser comme ceci:
Le code:
... Je voudrais faire cela de manière très différente... Pourquoi ne pas créer une fonction le long des lignes de:
Et puis il suffit, par exemple, définir F1 =
ConcatMe(A1:A10)
ou, pour ensuite écrire le code pour affecter la fonction de cellules que vous souhaitez...Ou, comme @KazJaw mentionné dans son commentaire, il suffit de définir
x=""
avant de re-bouclage.Espère que cette aide
Function ConcatenateRange(rng As Range, Sep As String)
Où Sep est le séparateur 😉il est similaire à l'idée déjà posté ici. Cependant, j'utilise un pour chaque boucle au lieu d'un tableau de configuration avec des boucles for imbriquées.
Ceci, je suppose, serait plus rapide que le tableau créé, en tant que nouveau tableau n'est pas créé à chaque fois que cette fonction s'exécute.
Droite avant la Prochaine m insérer simple instruction: x="" – KazimierzJawor Avr 8 '13 à 20:43
m'a fallu plusieurs minutes pour remarquer que cette réponse était sous les commentaires :p
Merci pour tout les gars, pour mon but, j'ai modifié vos suggestions et modifié mon code comme ça ne collait pas dans un cadre soigné fonctionner comme j'ai besoin d'être plus dynamique. Voir mon code ci-dessous. C'est exactement ce dont j'ai besoin.
@Issun la solution de ne pas accepter de sortie à partir d'une feuille de calcul de la formule de tableau comme argument de la " cell_range paramètre. Mais une légère modification à @Issun du code corrige ce. J'ai aussi ajouté un chèque qui ignore chaque cellule dont la valeur est
FALSE
.Par exemple:
Entrer dans la cellule C1 la formule ci-dessous et appuyez sur CTRL+ENTER pour enregistrer la formule en tant que formule matricielle:
J'étais à la recherche plus loin pour voir si il ya une meilleure façon d'écrire fonction concatener et de trouver ce. Il semble que nous avons tous le même principe de fonctionnement pour la fonction. Donc c'est ok.
Mais ma fonction est différente, cela peut prendre plusieurs paramètres, en combinaison de plages, de textes et de chiffres.
Je suppose qu'un délimiteur est obligatoire, donc si je n'ai pas besoin, je viens de mettre "" comme le dernier paramètre).
J'ai aussi supposer que les cellules vides ne doivent pas être ignorés. C'est la raison pour laquelle je veux la fonction de prendre plusieurs paramètres, donc je peux facilement omettre celles qui que je ne veux pas de la concaténation.
Exemple d'utilisation:
=JoinText(A1:D2,F1:I2,K1:L1,";")
Vous pouvez également utiliser l'ensemble du texte et le nombre parmi les paramètres:
=JoinText(A1:D2,123,F1:I2,K1:L1,"PQR",";")
J'aimerais entendre des commentaires ou des suggestions, si elle peut être améliorée.
Voici le code.
Très simple frère, Regard de l'Excel. Pas besoin de tous les encombrants de formule ou de VBA.
Il suffit de copier toutes les cellules que vous avez besoin pour concaténer et de les coller dans le bloc-notes. Maintenant, il suffit de sélectionner l'espace entre les lignes/colonnes (c'est un ONGLET de l'espace, en fait) et le trouver et de le remplacer.. Fait.. Toutes les cellules sont concaténées. Maintenant, il suffit de copier et de les coller dans la colonne et juste à vérifier.. c'est tout 🙂 Enjoy.
Je vous conseille d'utiliser Notepad++ pour cela 🙂 Koodos
Vimarsh
Tél. D. De Biotechnologie Végétale.
/