Makro för att extrahera data från ett diagram i Excel

Anteckning

Office 365 ProPlus byter namn till Microsoft 365-appar för företag. Mer information om den här ändringen finns i det här blogginlägget.

Sammanfattning

I Microsoft Excel diagram kan du hämta data från ett diagram även när data finns i ett externt kalkylblad eller en extern arbetsbok. Det här är användbart i situationer där diagrammet skapades från, eller länkades till, en annan fil som inte är tillgänglig eller har skadats på något sätt. När källdata i ett diagram går förlorade kan data fortfarande hämtas från själva diagrammet med hjälp av ett Microsoft Visual Basic for Applications makro.

Mer information

Microsoft tillhandahåller programmeringsexempel enbart i förklarande syfte och gör inga utfästelser, varken uttryckligen eller underförstått. Detta omfattar men begränsas inte till underförstådd garanti för säljbarhet eller lämplighet för ett visst syfte. I denna artikel förutsätts att du känner till det programmeringsspråk som demonstreras och de verktyg som används för att skapa och felsöka procedurer. Microsofts supportexperter kan hjälpa till att förklara funktionerna i en viss procedur, men de kommer inte att ändra dessa exempel för att tillhandahålla extra funktioner eller konstruera procedurer för att uppfylla dina specifika behov.

Följande exempelmakro placerar diagrammets källdata i ett kalkylblad med namnet "ChartData" i den aktiva arbetsboken, med början i den första kolumnen och första raden.

  1. Ange följande makrokod på ett modulblad:

    Sub GetChartValues()
       Dim NumberOfRows As Integer
       Dim X As Object
       Counter = 2
    
       ' Calculate the number of rows of data.
       NumberOfRows = UBound(ActiveChart.SeriesCollection(1).Values)
    
       Worksheets("ChartData").Cells(1, 1) = "X Values"
    
       ' Write x-axis values to worksheet.
       With Worksheets("ChartData")
          .Range(.Cells(2, 1), _
          .Cells(NumberOfRows + 1, 1)) = _
          Application.Transpose(ActiveChart.SeriesCollection(1).XValues)
       End With
    
       ' Loop through all series in the chart and write their values to
       ' the worksheet.
       For Each X In ActiveChart.SeriesCollection
          Worksheets("ChartData").Cells(1, Counter) = X.Name
    
          With Worksheets("ChartData")
             .Range(.Cells(2, Counter), _
             .Cells(NumberOfRows + 1, Counter)) = _
             Application.Transpose(X.Values)
          End With
    
          Counter = Counter + 1
       Next
    
    End Sub
    
  2. Infoga ett nytt kalkylblad i arbetsboken och byt namn på det till "ChartData" (utan citattecken).

  3. Markera diagrammet som du vill extrahera de underliggande datavärdena från.

    Anteckning

    Diagrammet kan antingen bäddas in i ett kalkylblad eller på ett separat diagramblad.

  4. Kör makrot GetChartValues.

    Data från diagrammet placeras i kalkylbladet "ChartData".

Om diagrammet ska vara interaktivt med återskapade data måste du länka diagrammet till det nya databladet i stället för att behålla länkarna till den saknade eller skadade arbetsboken.

  1. Markera diagrammet och klicka på en serie för att hitta det bladnamn som diagrammet är länkat till i den skadade eller saknade arbetsboken. Bladnamnet visas i serieformeln i formelfältet.

    Anteckning

    Bladnamnet kan komma efter arbetsbokens namn, som omges av hakparenteser som "[Bok1]", och före utropstecknet "!" (eller apostrof och utropstecken "'!") som visar början av en cellreferens. Bladnamnet innehåller endast tecknen mellan den stängda hakparentessymbolen "]" och utropstecknet (eller apostrof och utropstecken). Ta bort eventuell apostrof omedelbart före utropstecknet, eftersom en apostrof inte får vara det sista tecknet i ett kalkylbladsnamn.

  2. Dubbelklicka på fliken för det nya bladet med namnet ChartData.

  3. Skriv det ursprungliga bladnamnet från steg 1 över det markerade "ChartData" och tryck på RETUR. Namnet måste vara samma som bladnamnet i den skadade eller saknade arbetsboken.

  4. Om du inte har sparat filen med diagrammet och databladet sparar du filen.

  5. I Excel 2003 eller Excel 2002 klickar du på Länkar på Redigera-menyn och sedan på Ändra källa.

    I Excel 2007 klickar du på fliken Data, sedan på Redigera länkar i gruppen Samband och sedan på Ändra källa.

  6. Markera den länk du vill ändra i rutan Källfil och klicka sedan på Ändra källa.

  7. I dialogrutan Ändra länkar markerar du den nya filen med de återskapade data och det återskapade diagrammet och klickar sedan på OK.

  8. Om du får följande felmeddelande

    Formeln innehåller en ogiltig extern referens till ett kalkylblad.

    Det är troligt att bladnamnet som du skrev i steg 3 inte är samma som det ursprungliga. Gå tillbaka till steg 1.

  9. Rutan Källfil kan nu vara tom. Det innebär att alla länkar pekar på den aktiva filen i stället för den saknade eller skadade filen. Klicka på Stäng.

Diagrammet refererar nu till och interagerar med återskapade data i det omdöpta bladet i den aktiva arbetsboken.