Excel-diagrammer - innstilling serie end dynamisk

stemmer
7

Jeg har et regneark med mange grafer i det og ett ark med masse data fôring disse grafene.

Jeg har plottet dataene på hver graf som bruker

=Sheet1!$C5:$C$3000

Dette utgangspunktet bare plotter verdiene i C5 til C3000 på en graf.

Regelmessig selv om jeg bare ønsker å se på en undergruppe av data dvs. jeg kanskje bare ønsker å se på de første 1000 radene for eksempel. Foreløpig å gjøre dette må jeg endre formelen i hver av mine grafer som tar tid.

Vil du vite en måte å forenkle dette? Ideelt hvis jeg bare kunne ha en celle på ett ark som det står i rad nummer fra og plotter alle grafer fra C5 til C 'radnummer' ville være best.

Eventuelle hjelpe ville være mye verdsatt.

Publisert på 13/10/2008 klokken 13:46
kilden bruker
På andre språk...                            


7 svar

stemmer
1

Du kan angi området for et diagram dynamisk i Excel. Du kan bruke noe sånt som følgende VBA kode for å gjøre det:

Private Sub Worksheet_Change(ByVal Target as Range)
    Select Case Target 
    Case Cells(14, 2)
        Sheet1.ChartObjects(1).Chart.SetSourceData Range("$C5:$C$" & Cells(14,2))
    ...
    End Select
End Sub

I dette tilfellet, er cellen som inneholder nummeret på den siste raden for å inkludere er B14 (husk rad først når det refereres til cellene objekt). Du kan også bruke en variabel i stedet for Cells referanse hvis du ønsket å gjøre dette helt i kode. (Dette fungerer i både 2007 og 2003.) Du kan tildele denne prosedyren til en knapp, og klikk på den for å oppdatere diagrammet når du oppdaterer cellen som inneholder den siste raden.

Men dette kan ikke være nøyaktig hva du vil gjøre ... Jeg er ikke klar over en måte å bruke en formel direkte i et diagram for å angi kildedataene.

Edit: Og som PConroy påpeker i en kommentar, kan du legge inn dette i Endre hendelsen for regnearket, slik at verken en knapp eller en tastekombinasjon er nødvendig for å kjøre koden. Du kan også legge til koden slik at den oppdateres hver diagrammet bare når samsvar cellen er redigert.

Jeg har oppdatert eksempelet ovenfor for å reflektere dette.

Svarte 13/10/2008 kl. 14:07
kilden bruker

stemmer
1

Du kan se på dynamiske områder. Hvis du bruker OFFSET-funksjonen, kan du angi en startcelle og antall rader og kolonner for å velge. Dette området har en del nyttig informasjon om å tildele et navn til en offset rekkevidde.

Svarte 13/10/2008 kl. 14:14
kilden bruker

stemmer
6

OK, måtte jeg gjøre litt mer forskning, her er hvordan å gjøre det arbeidet, helt i regnearket (uten VBA):

Ved hjelp av A1 som i slutten av den ønskede rekkevidde, og diagrammet er på samme ark som data:

Navngi den første cellen av data (C5) som et navngitt område, si TESTRANGE.
Laget en navngitt område MYDATAs som den følgende formel:

= FORSKYVNING (TESTRANGE, 0, 0, Ark1! $ A $ 1, 1)

Nå, gå til kategorien SERIES i dialogboksen diagram kildedataene, og endre dine verdier uttalelse til:

= Ark1! MYDATA

Nå hver gang du endrer A1 celleverdien, vil det endre diagrammet.

Takk til Robert Mearns for å fange feilene i mitt forrige svar.

Svarte 13/10/2008 kl. 14:22
kilden bruker

stemmer
1

+ 1s for navnet løsning.

Legg merke til at navnene ikke egentlig veldig referanseområder, referere de formler . Det er derfor du kan sette et navn til noe sånt som "= OFFSET (...)" eller "= ANTALL (...)". Du kan opprette navngitte konstanter, bare gjøre navnet referansen noe sånt som "= 42".

Navngitte formler og matriseformler er de to regneark teknikker som jeg finner meg selv gjelder ikke-helt-power-user regneark om og om igjen.

Svarte 13/10/2008 kl. 17:22
kilden bruker

stemmer
3

Dette kan oppnås i to trinn:

  • Lag en dynamisk navngitt område
  • Legg litt VBA-kode for å oppdatere listene datakilde til navngitte området

Lag en dynamisk heter Range

Angi antall rader i dataområdet i en celle på databladet.

Opprett et navngitt område på databladet (Sett inn - Navn - Definer) kalt MyRange som har en formel som ligner på dette:

=OFFSET(Sheet1!$A$1,0,0,Sheet1!$D$1,3)

Oppdater formelen for å matche din layout

  • Ark1! $ A $ 1 sett dette i venstre side av din dataområde
  • Ark1! $ D $ 1 sett dette til cellen som inneholder antall rader
  • 3 sette denne verdien til antall kolonner

Test at navngitte området fungerer:

Velg rullegardinmenyer Rediger - Gå til, skriver MyRange i referansefeltet. Din dataområdet for diagrammet bør velges.

Legg litt VBA-kode

Åpne VBA IDE (Alt-F11)

Velg Ark1 i VBAProject vindu og sette inn denne koden

Private Sub Worksheet_Change(ByVal Target As Range)

        If Target.Address <> "$D$1" Then Exit Sub
    'Change $D$1 to the cell where you have entered the number of rows
    'When the sheet changes, code checks to see if the cell $D$1 has changed

       ThisWorkbook.Sheets("Sheet1").ChartObjects(1).Chart.SetSourceData _
         Source:=ThisWorkbook.Sheets("Sheet1").Range("MyRange")
    '  ThisWorkbook.Sheets("Chart1").SetSourceData _
         Source:=ThisWorkbook.Sheets("Sheet1").Range("MyRange")
    'The first line of code assumes that chart is embedded into Sheet1
    'The second line assumes that the chart is in its own chart sheet
    'Uncomment and change as required

    'Add more code here to update all the other charts

End Sub

Ting å se etter

Ikke direkte bruke navngitte området som datakilde for diagrammet. Hvis du går inn på navngitte området "MyRange" som kildedata - dataområde for diagrammet, vil Excel automatisk konvertere navngitte området til en faktisk rekkevidde. Eventuelle fremtidige endringer i navngitt område vil derfor ikke oppdatere diagrammet.

Ytelsen kan bli påvirket av de ovennevnte forslagene.

Den OFFSET funksjon i det oppgitte serien er "volatile" som betyr at det rekalkulerer når en celle i arbeidsboken beregner. Hvis ytelsen er et problem, erstatte den med INDEX formel.

=Sheet1!$A$1:INDEX(Sheet1!$1:$65536,Sheet1!$D$1,2)

Koden branner hver gang dataene er endret på Ark1. Hvis ytelsen er et problem, endre koden for å kjøre kun på forespørsel (dvs. via en knapp eller meny).

Svarte 13/10/2008 kl. 22:34
kilden bruker

stemmer
0

En enkel måte å gjøre dette på er å bare skjule rader / kolonner du ikke vil ha med - når du går til grafen automatisk utelukker de skjulte rader / kolonner

Svarte 17/08/2009 kl. 18:52
kilden bruker

stemmer
0

Forbedre svar på @Robert Mearns , her er hvordan å bruke dynamiske celler områder for grafer ved hjelp av bare Excel formler (ingen VBA nødvendig):

Lag en dynamisk heter Range

Si du har 3 kolonner som:

A5 | tid | data1 | data2 |

A6 | 00:00 | 123 123 | 234 234 |

...

A3000 | 16:54 | 678 678 | 987 987 |

Nå kan rekkevidden av dine data endres i henhold til data du har, som du har 20 rader med data, 3000 rader med data eller 25 000 rader med data. Du ønsker å ha en graf som vil bli oppdatert automatisk uten behov for å tilbakestille dataområdet hver gang du oppdaterer selve dataene.

Her er hvordan du gjør det enkelt:

  1. Definer en annen celle som det er verdien vil ha det antall av de okkuperte celler med data, og sette formelen =COUNTIF(A:A,"<>"&"")i den. For eksempel, vil dette være i celle D1 .

  2. Gå til "formler" fanen -> "Definer navn" for å definere et navn rekkevidde.

  3. I "Nytt navn" vinduet:

    Jeg. Gi dine data spenner et navn, som DataRange for eksempel.

    ii. I "refererer til" stille formelen til: =OFFSET(Sheet1!$A$1, 0, 0,Sheet1!$D$1,3),

    hvor:

    • Sheet1!$A$1 => Annonse: er referanse som du ønsker å basere forskyvningen.

    • 0 => Rader: er antall rader, opp eller ned, som du vil at øvre venstre celle av resultatene å vise til.

    • 0 => Kolonner: er antall kolonner, til venstre eller høyre, som du vil ha det øverste venstre celle av resultatene å vise til.

    • Sheet1!$D$1 => Høyde: er høyden, i mange rader, som du vil at resultatet skal være.

    • 3 => Bredde: er bredden i antall kolonner, som du vil at resultatet skal være.

  4. Legg en graf, og i "Velg datakilde" vindu, i Diagramdataområdet, setter du inn formelen som du har opprettet. For eksempel:=Sheet1!DataRange

Cons: Hvis du direkte bruke navngitte området som datakilde for diagrammet, vil Excel automatisk konvertere navngitte området til en faktisk rekkevidde. Eventuelle fremtidige endringer i navngitt område vil derfor ikke oppdatere diagrammet.

For at du trenger å redigere diagrammet og tilbakestille området til =Sheet1!DataRangeenhver tid. Dette kan ikke være så brukbart, men det er bedre enn å redigere området manuelt ...

Svarte 08/04/2018 kl. 10:48
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more