Avatar billede zac Nybegynder
12. november 2005 - 10:09 Der er 20 kommentarer og
1 løsning

Formel til auto update af chart - et name-define problem, II ?

(Fik løst problem før dette: brug ; i stedet for , - jf. http://www.eksperten.dk/spm/663799)

Jeg har Excel 2003, et sheet med data og chart med søjler...
Søgning på nettet om automatisk opdatering af chart, når data tilføjes, giver en del henvisninger til denne her: http://j-walk.com/ss/excel/usertips/tip053.htm - hvor man også kan se data og chart - og som svarer til samme forfatters Excel 2000 Bibel (s. 482).

1. kolonne: Date, dato1, dato2, dato3...
2. kolonne: Sales, tal1, tal2, tal3,...

I Insert, Name, Define skal man først bruge denne formel:

for name=Date:  =OFFSET(Sheet1!$A$2;0;0;COUNTA(Sheet1!$A:$A)-1)
for name=Sales: =OFFSET(Sheet1!$B$2;0;0;COUNTA(Sheet1!$B:$B)-1)

Derefter skulle ifølge vejledn. chart->select data series give denne formel:
=SERIES(Sheet1!$B$1;Sheet1!$A$2:$A$10; Sheet1!$B$2:$B$10;1) (hvor ; alle steder er i stedet for , ).

Men source data->data range siger blot som hvis names ikke var oprettet: =Sheet1!$A$1:$B$10
Det er som om de oprettede names ikke accepteres, selv om de er der, når man går ind i insert->name.

Hvad kan være grunden til, at =Sheet1!$A$1:$B$10 ikke erstattes af =SERIES... efter oprettelsen af de to x name?

(man når altså ikke frem til sidste trin, hvor vejl. siger erstat =SERIES(Sheet1!$B....) med:
=SERIES(;Sheet1!Date;Sheet1!Sales;1) (hvor alle ; står som , i vejl.)
Avatar billede sjap Praktikant
12. november 2005 - 11:28 #1
Du skal pege på søjlerne i grafen - dvs. grafen skal være oprettet. Når du gør det, kan du se at der i formellinien står

=SERIES(Sheet1!$B$1;Sheet1!$A$2:$A$10; Sheet1!$B$2:$B$10;1)

Det vil der altid stå, hvis det er det datasæt, som du har oprettet grafen med.
Avatar billede sjap Praktikant
12. november 2005 - 11:33 #2
Hvis du er interesseret, så kan jeg sende dig et regneark med et indhold, der svarer til det der vises på http://j-walk.com/ss/excel/usertips/tip053.htm

Bare læg din mail-adresse, hvis du er interesseret.
Avatar billede zac Nybegynder
12. november 2005 - 22:34 #3
Jeg har fået det rejste problem løst efter at sjap sagde de forløsende ord "pege på søjlerne i grafen" - jeg vidste slet ikke, at det gav en formel (havde regnet med formel var den i source data).

Så nu har jeg fået erstattet
=SERIES(Sheet1!$B$1;Sheet1!$A$2:$A$10; Sheet1!$B$2:$B$10;1) med den angivne:

=SERIES(;Sheet1!Date;Sheet1!Sales;1)
- men nu er det så den, der melder fejl, en eller flere ugyldige referencer.
Så hvad kan det mon være? Det skal være ; alle steder, ikke?
Avatar billede zac Nybegynder
12. november 2005 - 22:40 #4
Jeg har altså nu:

name Date: =OFFSET(Sheet1!$A$2;0;0;COUNTA(Sheet1!$A:$A)-1)
name Sales: =OFFSET(Sheet1!$B$2;0;0;COUNTA(Sheet1!$B:$B)-1)
formlen ved klik på grafen:
=SERIES(Sheet1!$B$1;Sheet1!$A$2:$A$10;Sheet1!$B$2:$B$10;1)

Og alligevel kan sidstnævnte ikke erstattes med: =SERIES(;Sheet1!Date;Sheet1!Sales;1)
Avatar billede zac Nybegynder
12. november 2005 - 22:50 #5
Og forøvrigt mærkeligt, at hjælpefunktionen i Excel ikke giver noget ved søgning på chart update, auto eller automatic update - tilsyneladende kender hjælp ikke den automatiske opdatering fra bog og link øverst i dette spm.
Avatar billede sjap Praktikant
12. november 2005 - 22:52 #6
Jeg skal blot lige sikre mig: Bruger du en engelsksproget version af Excel?
Avatar billede zac Nybegynder
12. november 2005 - 22:53 #7
yes
Avatar billede sjap Praktikant
12. november 2005 - 22:58 #8
Din graf serie skulle i øvrigt udskiftes med:

=SERIES(Sheet1!$B$1;Sheet1!Date;Sheet1!Sales;1)

for at svare til din oprindelige serie - men jeg tror dog ikke at det løser dit problem.
Avatar billede sjap Praktikant
12. november 2005 - 22:59 #9
Hvilket resultat får du, hvis du i en celle skriver

=SUM(Sales)
Avatar billede sjap Praktikant
12. november 2005 - 23:10 #10
Hvis du har brugt de samme data som i eksemplet skal du få 4891. Får du ikke det, er der en fejl de navngivne områder.

Hvis det ikke er problemet, er du velkommen til at sende regnearket til sjap9000 snabela hotmail punktum com. Så skal jeg se om jeg kan løse problemet.
Avatar billede zac Nybegynder
12. november 2005 - 23:30 #11
7. post hedder 671 i bogen og 621 på www-linket...
Med 621 får jeg 4882 og med 671 får jeg 4932.

=SERIES(Sheet1!$B$1;Sheet1!Date;Sheet1!Sales;1) giver også meddelelse om en eller flere ugyldige referencer

Sender dig filen - tak for tilbuddet (men går nok i seng nu, vender tilbage i morgen engang...)-
Avatar billede sjap Praktikant
13. november 2005 - 00:01 #12
Der er vist også en forskel på det første ciffer (du har skrevet 556 - på linket står 565).

Jeg ved ikke lige, hvad det er, der får din Excel-fil til at reagere anderledes, men det virker hos mig med denne her:

=SERIES(Sheet1!$B$1;'auto-opdate-test.xls'!Dates;'auto-opdate-test.xls'!Sales;1)

Det er ikke noget jeg lige fandt på, men kom frem når jeg i den oprindelige SERIES blot ændrede $A$2:$A$10 til Dates og $B$2:$B$10 til Sales.

Jeg returnerer din fil og så den som jeg har siddet og rodet med (hvor linket kunne bruges direkte).
Avatar billede zac Nybegynder
13. november 2005 - 14:56 #13
Tak! det virker, og ift. de oprindelige vejledninger er det filnavnet foran kolonnerne, som gør forskellen der skal stå 'filnavn' i stedet for Sheet1.

Den oprindelige formel:
=SERIES(Sheet1!$B$1;Sheet1!$A$2:$A$10; Sheet1!$B$2:$B$10;1)

skal altså ikke som jeg troede fra vejledningen skiftes ud med:
=SERIES(Sheet1!$B$1;Sheet1!Dates;Sheet1!Sales;1)

men med den sjap angiver:
=SERIES(Sheet1!$B$1;'auto-opdate-test.xls'!Dates;'auto-opdate-test.xls'!Sales;1)

Og når man laver et Sheet2, bruger man samme formel bare med =SERIES(Sheet2!$B....) i stedet for Sheet1...
Avatar billede sjap Praktikant
13. november 2005 - 15:06 #14
zac

Hvis du gerne vil eksportere diagrammet til en grafik-fil kan det gøres med følgende lille macro:

Sub ExportGraph()

'Charts("Diagram1").Export FileName:="aktuelt_salg.gif", FilterName:="GIF"
'Charts("Diagram1").Export FileName:="aktuelt_salg.jpg", FilterName:="JPEG"

'Worksheets("Sheet1").ChartObjects(1).Chart.Export FileName:="aktuelt_salg.gif", FilterName:="GIF"
Worksheets("Sheet1").ChartObjects(1).Chart.Export FileName:="aktuelt_salg.jpg", FilterName:="JPEG"

End Sub

Her har du så fået alle mulighederne på en gang. Programmet vil kun bruge den exportfunktion, der ikke har en ' foran, så du bestemmer selv.

De to første funktioner bruges, hvis du har placeret diagrammet i et faneblad for sig selv (altså et faneblad uden regneark). De to sidste bruges, hvis du har placeret diagrammet i et regneark (det er den du har brugt indtil nu).
Avatar billede sjap Praktikant
13. november 2005 - 15:10 #15
Skulle måske lige nævne at macroen lægges ind i regnearket på følgende måde:

- tryk Alt-F11 for at åbne macro-editoren
- vælg menuen Indsæt/Modul
- kopier ovenstående ind i dette modul og gem regnearket

Placer markøren et eller andet sted i programmet og tryk F5 for at afprøve programmet.
Avatar billede zac Nybegynder
13. november 2005 - 17:29 #16
Tak endnu en gang, det virker - fint! Bruger dog Alt+F8, makrovalg (F5 kræver indskrivning, og hvad skal jeg skrive der?)

Der var begynder vanskeligheder, først: Filen skabt, men PhotoShop ville ikke kendes ved den (et JPEG marker segment lenght is too short, file may be truncated or incomplete).
Og så var der nogle gange, hvor ny fil ikke ville skabes. Så flyttede jeg .xls filen til nyt dir., og så virkede det, både mht. .gif og .jpg.

Det virker også med .png! (jeg har slået .png til som angivet: Tools menu, Options, General, Web Options Browsers). .phg fylder 5 KB, .gif 14 og .jpg 45, så png er absolut at foretrække.

Kan man også makro programmere sig til bestemt størrelse på det billede, man skaber med billedfilen? Det vil jeg så nærmere på.
Avatar billede sjap Praktikant
13. november 2005 - 18:21 #17
Alt-F8 er faktisk også en nemmere måde at gøre det på. Alt-F11 bruges hovedsagligt, når man tumler med større programmeringsopgaver - og det kan man jo ikke kalde det her. Godt set!

Det skulle være muligt at vise nogen filterindstillinger, hvis man sætter Interactive:=True.

Worksheets("Sheet1").ChartObjects(1).Chart.Export FileName:="aktuelt_salg.jpg", FilterName:="JPEG", Interactive:=True

Det gør dog ingen forskel i min gamle 97'er, men måske virker det i din version. Jeg kan ikke lige finde noget programkode, der kan ændre billedstørrelsen.
Avatar billede bak Forsker
13. november 2005 - 22:34 #18
Et lille trick til det med de dynamiske navne.
Hvis vi antager at det første navn virker ok (dækker det hele) og at det er x-aksen så er der ingen grund til at gøre for meget ud af de næste navne

Date:  =OFFSET(Sheet1!$A$2;0;0;COUNTA(Sheet1!$A:$A)-1)
Sales: =OFFSET(Date, 0, 1)

Her tager sales udgangspunkt i det allerede definede navn Date, og vælger kolonnen 1 til højre for Date
Avatar billede sjap Praktikant
13. november 2005 - 22:36 #19
Fælt smart! Det er næsten for let. ;0)
Avatar billede bak Forsker
13. november 2005 - 22:43 #20
:-) ja, det gør det noget nemmere hvis man har flere kolonner med data..
Avatar billede sjap Praktikant
13. november 2005 - 22:45 #21
- og meget mere overskueligt. De andre formler kræver jo koncentration, hvis de skal læses.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester