Excel: Remplir Des Données Sur Plusieurs Feuilles De Calcul
Malheureusement pour mon employeur, aucun de mes ingénierie de réseau de cours inclus advanced Excel formule de programmation. Inutile de dire, je ne sais rien à propos de Excel enregistrer pour la SOMME de base et de la NUMÉRATION de la formule de commandes.
Mon employeur dispose d'un classeur Excel avec plusieurs feuilles de calcul à l'intérieur de celui-ci représentant de chacun des mois de l'année civile. Nous voulons être en mesure d'avoir un "total" de la feuille de calcul dans le classeur qui reflète toutes les données concernant l'ensemble du classeur dans chaque colonne/rangée.
Un exemple pour plus de clarté:
-
Dans la feuille de calcul "May_2013", Une colonne est intitulée "DATE". La cellule A2 contient les données "PEUVENT-1".
-
Dans la feuille de calcul "June_2013", Une colonne est intitulée "DATE". La cellule A2 contient les données de JUIN "-1".
-
Dans la feuille "Total", Une colonne est intitulée "DATE". Nous voulons que les cellules A2 à réfléchir "MAI-1" et A3 pour refléter "JUIN-1".
Nous voulons faire cela pour toutes les feuilles de calcul, des colonnes A-Q, des lignes 2-33 et remplir une fiche à la fin, contenant toutes les données de toutes les feuilles de calcul dans leurs colonnes correspondantes.
Est-ce possible?
- Lire plus attentivement (après affichage rapide bits de code) je ne suis pas sûr de ce que vous avez l'intention de faire avec la ligne 3 de la feuille de calcul. J'ai supposé qu'il serait copié à la ligne 3 de la fiche de synthèse, mais maintenant je vois que vous voulez mettre la ligne 2 de JUIN. Comment les données de l'autre les lignes traitées? Pouvez-vous préciser?
- Jusqu'à présent, j'ai trouvé une solution, mais il est incroyablement fastidieux et demande beaucoup de temps, même si les résultats sont ce que je suis à la recherche pour. Quelqu'un m'a recommandé d'entrer le texte suivant: "=SheetName!Cellule pour chaque cellule correspondante sur les Totaux de la feuille. C'est une folle quantité de travail, mais il fait ce que je veux faire, c'est la fusion de toutes les données sur toutes les feuilles de calcul du classeur pour les totaux de la feuille.
Vous devez vous connecter pour publier un commentaire.
Voici deux solutions VBA. Le premier fait ceci:
La deuxième montre comment faire des manipulations de la colonne de données avant la copie: pour chaque colonne, il applique la
WorksheetFunction.Sum()
, mais vous pouvez la remplacer avec une autre fonction d'agrégation que vous souhaitez utiliser. Puis il copie le résultat (une ligne par feuille) pour les "totaux" de la feuille.Les deux solutions sont dans le classeur vous pouvez télécharger à partir de ce site. Exécuter les macros avec , et de choisir le plus approprié dans la liste d'options qui s'affiche. Vous pouvez modifier le code en invoquant l'éditeur VBA avec .
Final(?) edit:
Si vous voulez que ce script à exécuter automatiquement chaque fois que quelqu'un fait un changement pour le classeur, vous pouvez capturer l'
SheetChange
de l'événement par l'ajout du code pour le classeur. Pour cela, procédez comme suit:aggregateRaw
etaggregateTotal
, correspondant environ à chacun des ci-dessus. Laissez-moi savoir si cela fonctionne pour vous!.xlsm
extension à activer les macros). Que doit résoudre pour vous.SheetChange
chose? Vous n'avez pas besoin d'exécuter quoi que ce soit. Chaque fois que vous changer quelque chose dans votre classeur, les totaux seront automatiquement mise à jour. Vous n'avez pas à "exécuter" quoi que ce soit maintenant. Juste au cas où, j'ai re-téléchargé une version qui a été de travailler sur mon ordinateur quelques minutes plus tôt (avec deux feuilles de données factices) sur le même lien que ci-dessus. Il suffit d'entrer les données et regarder la magie...Module1
, de trouver les lignes' if you want to clear the sheet before copying data, uncomment this line: ' newSheet.UsedRange.Delete ' assuming you want to copy the headers, and that they are the same ' on all sheets, you can copy them to the "totals" sheet like this: ActiveWorkbook.Sheets(1).Range("1:1").Copy targetRange
. Si vous commentez la ligne (en mettant une apostrophe'
en face d'elle), votre problème devrait disparaître? Une ligne similaire existe dans leaggregateTotal
fonction, mais je pense que vous ne l'utilisez pas, que de toute façon. Lorsque vous confirmer que c'est OK, vous pourriez envisager de faire "accepter" la réponse...Sub reStart() Application.EnableEvents=True End Sub
. Exécuter cette macro. Voir si les choses s'améliorent. Laissez-moi savoir.Veuillez utiliser RDBMerge add-in qui permettra de combiner les données de feuille de calcul différente et de créer une fiche pour vous. Veuillez voir le lien ci-dessous pour plus de détails.
http://duggisjobstechnicalstuff.blogspot.in/2013/03/how-to-merge-all-excel-worksheets-with.html
Télécharger RDBMerge
Vous pouvez utiliser l'indirects de la fonction de référence le nom de la feuille. Dans l'image ci-dessous cette fonction prend le nom d'en-tête (37) et l'utilise comme la feuille de référence. Tout ce que vous avez à faire est de choisir le bon "nombre total de cellules" que j'ai fait "A1" à "MAY_2013". J'ai mis une image ci-dessous pour vous montrer mon nom de référence ainsi que le nom de l'onglet
=MAY_2013!A1
=SUM(INDIRECT(INDIRECT("B35")&"!A1:A35"))
Il fera le bilan de cette gamme spécifique pour ce que l'en-tête que vous avez tant que l'en-tête correspond à un onglet.INDIRECT
fonction pour que cela fonctionne