2009-05-08 6 views
2

J'ai écrit un script qui crée une feuille Excel complexe qui contient des données provenant de plusieurs sources de données. Les données sur chaque feuille sont généralement de 1 à 5 lignes. Ce serait génial si je pouvais créer une autre feuille qui afficherait les données des autres feuilles en ligne (c'est-à-dire que la feuille de vue d'ensemble devrait changer au fur et à mesure que je change les feuilles de données). J'ai également besoin de mettre en forme les données avec différents styles et de les copier avec la feuille de vue d'ensemble. Enfin, les fiches de données ont des largeurs de colonnes différentes. Je pensais que je pouvais simplement importer les feuilles. Cela fonctionne lorsque j'enregistrer chaque feuille dans un seul fichier et ensuite les importer en tant qu'objets OLE. N'y a-t-il pas moyen d'obtenir le même effet avec un seul fichier? Ce dont j'ai besoin est de dire à Excel "dessiner A1: F3 sur Sheet2 sur Sheet1 dans la cellule A1". "Insérer objet" me propose de créer un document Word ou une présentation PP et de le mettre dans une cellule, mais je ne peux pas créer une nouvelle feuille Excel et la mettre dans une cellule. Ce qui donne?Excel: Comment afficher les données de plusieurs feuilles en une?

Répondre

0

Un classeur Excel unique peut contenir plusieurs feuilles. Les formules d'une feuille peuvent référencer des cellules d'une autre feuille dans le même classeur.

+0

Cela ne résout pas les problèmes de mise en page. Il n'y a aucun moyen de dire "copier la mise en page + les données de la feuille de cellule, colonne, ligne". De plus, il ne permet pas de cinq la colonne "B" deux largeurs différentes, en fonction de la ligne. –

2

si vous voulez une construire une solution par vous-même essayer:
http://poi.apache.org/
Apache POI - Java API Pour accéder au format Microsoft Fichiers Il est vraiment facile à utiliser ... et vous pouvez facilement les données de format etc ...

J'ai utilisé POI avec Apache Digester (http://commons.apache.org/digester/)
pour lire des données à partir de fichiers XML et créer des feuilles Excel. [EDIT] Avec cette approche, vous pouvez lire dans la feuille Excel existante, copier les cellules pertinentes entre les feuilles de calcul (y compris le formatage). Cela ne résout cependant pas les "différentes largeurs de colonnes" et la "mise à jour en ligne".

+0

Comme je l'ai dit, j'ai déjà résolu cela. Ce dont j'ai besoin, c'est de dire à Excel "dessine A1: F3 sur Sheet2 sur Sheet1 dans la cellule A1". –

+0

Eh bien ... si vous avez déjà résolu le problème de placer des données dans une feuille Sheet2 ... pourquoi n'est-il pas possible de placer ces données dans Sheet1? Je pense que je ne comprends pas ... sry – bastianneu

+1

Je pense que bastianneu signifiait qu'avec POI vous pouvez lire les données/style/formatage de sheet1 et les placer dans la feuille2. – IAdapter

2

Vous pouvez référencer d'autres feuilles avec la syntaxe suivante:

SheetName!Cell 

donc dans Sheet1, A1 une formule de

=Sheet2!B4 

aura une référence en direct à la valeur sheet2 à B4

+0

Comment faire référence à la mise en forme de Sheet2! B4? –

+0

Vous pouvez utiliser la méthode PasteSpecial pour «peindre» la mise en forme des données source dans le nouveau résumé. – Lunatik

+0

Le pinceau de format est un autre outil utile ici. Les formats ne sont pas apportés pour une bonne raison. C'est un moyen de séparer le "modèle" de la "vue" –

2

Copiez la plage. Déplacez-vous dans la cellule pour laquelle vous souhaitez conserver la référence. Maintenez la touche Maj enfoncée lorsque vous sélectionnez le menu Edition. Notez qu'il y a de nouveaux éléments de menu; "Coller l'image" et "Coller l'image". Vous voulez sélectionner "Coller le lien d'image". Maintenant, chaque fois que la "source" est mise à jour ou que le format change, la "destination" sera mise à jour.

Sub DemoIt() 

    'open excel and vbe windows side-by-side 
    ' to see results when break points hit 

    'setup values 
    Range("A1").Select 
    ActiveCell.FormulaR1C1 = "A" 
    Range("A2").Select 
    ActiveCell.FormulaR1C1 = "B" 
    Range("A3").Select 
    ActiveCell.FormulaR1C1 = "C" 

    'select "source" values and copy 
    Range("A1:A3").Select 
    Selection.Copy 

    'move to "destination" 
    Range("B1").Select 

    'paste the "picture link" 
    ActiveSheet.Pictures.Paste(Link:=True).Select 
    Application.CutCopyMode = False 

    'check out results 
    Stop 

    'change values 
    Range("A2").Select 
    ActiveCell.FormulaR1C1 = "99" 

    'notice "destination" changed 
    Stop 

    'change formatting 
    Range("A3").Select 
    Selection.Font.Size = 20 

    'notice formatting changed 
    Stop 

End Sub 
2

Vous pouvez utiliser des objets de caméra.

  1. Copiez la plage que vous voulez sur la feuille de couverture
  2. Aller à la page de couverture
  3. Maintenez la touche Maj enfoncée et cliquez sur le Modifier Menu
  4. Cliquez sur le Coller Photo Lien élément de menu

Ceci colle un objet image dynamique qui se met à jour chaque fois que la région correspondante de la feuille de données change.

Questions connexes