Documentation
EnergyData Iberia Excel Add-in — 22 custom functions, 253+ metrics.
Install the add-in
Excel Web, Desktop (Win + Mac).
Concepts
Zones, timezone, agg codes, capture methods, DST.
Function reference
22 functions, full per-function pages.
Metrics catalog
253 metrics with unit, source, range.
Changelog
Add-in version history & breaking changes.
Quick start
=ED.OMIE()— Latest spot price=ED.OMIE.RANGE("2025-01-01",, 3)— Monthly prices=ED.CAPTURE(1, "2025-07-01")— Solar capture=ED.GET("brent")— Brent crude=ED.METRICS()— List every metricZones
Pass the zone argument to switch markets. Default "ES" when not provided. Coverage varies — check the metrics catalog for each metric × zone availability.
Aggregation codes
| Code | Meaning | Output |
|---|---|---|
| 0 / "5min" / "10min" / "15min" | Native / sub-hourly | 5–96 rows/day depending on metric |
| 1 | Hourly | 24 rows/day (25 on fall-DST day) |
| 2 | Daily (default) | 1 row/day |
| 3 | Monthly | 1 row/month |
| 4 | Quarterly | 1 row/quarter |
| 5 | Semiannual | 1 row/semester |
| 6 | Annual | 1 row/year |
| 7 | Total | Single value over the whole period |
⚡ MW power vs MWh energy
Generation, demand, balancing-band capacity and cross-border flows are stored in MW — instantaneous power. When you aggregate (e.g. agg=6 for annual) the API returns the average MW over the bucket, not the total energy delivered.
In numbers: =ED.GEN.RANGE(1, "2025-01-01", "2025-12-31", 6) may return ~3,500— that's the average power, not 3.5 GWh. The total energy is roughly 3,500 × 8,760 ≈ 30.7 TWh.
Pass unit="MWh"to convert. The conversion uses each metric's native sample interval (5 min for ESIOS Spain gen/demand, 15 min for balancing, 60 min for ENTSO-E zones), so the result is exact down to the sample:
=ED.GEN.RANGE(1, "2025-01-01", "2025-12-31", 6)— Solar PV avg power (MW)=ED.GEN.RANGE(1, "2025-01-01", "2025-12-31", 6, , , , "MWh")— Solar PV total energy (MWh)=ED.RANGE("demand_real", "2025-01-01",, 6, , , , , , "MWh")— Annual demand in MWh=ED.RANGE("gen_total", "2025-01-01", "2025-12-31", 6, , , , , , "MWh")— Annual generation 2025 (all techs, MWh)=ED.RANGE("gen_renewable", "2025-01-01", "2025-12-31", 6, , , , , , "MWh")— Annual renewable generation (MWh)Available on ED.GEN.RANGE and ED.RANGE since v7.1.10. Virtual aggregates (gen_total, gen_renewable, gen_thermal, gen_fossil) sum the per-tech series at each native timestamp — same MW/MWh logic. Calling unit="MWh" on a price metric (EUR/MWh) or already-MWh metric returns a 400 error.
Shared parameters
These show up across multiple functions with consistent semantics.
tz0/"madrid" (default) | 1/"cet" | 2/"utc"How to interpret the date/hour/minute argument and how to bucket range output. Madrid is DST-aware (24-25 hour days). CET is fixed UTC+1, no DST → 8760 hourly buckets/year. UTC is fixed offset 0.
noDate0 (default, include) | 1 (omit)On *.RANGE functions: whether to include the date/period column in the spill array. Useful when you already have your own time index.
method0/"real" (default) | 1/"pbf"ED.CAPTURE only. realized = dayahead × metered generation (matches what publications report). PBF = dayahead × ex-ante OMIE schedule (Spain only, available before realized data).
Functions
Click a function for the full reference. Or browse all on a single page.
Prices
Wholesale day-ahead spot prices.Generation
Power generation by technology and per production unit.Capture price
Production-weighted average price per technology.Battery (BESS)
Optimal battery spread between cheap and expensive hours.Installed capacity
Capacity stock (MW) by tech and region.Registry
Production-unit and owner directory (REE + ENTSO-E).Settlement
OMIE wholesale settlement and government PPA auction awards.Grid access
REE grid-access capacity (PDF history + portal snapshot).Generic + metrics
Single-value, range, and the metric catalog.253+ metrics available
Spot prices, generation, capture prices, futures, commodities, balancing, redispatch, and more.
View live data coverage →