3 Excel vs Access - Döntés a gyakorlatban
A gyakorlatban a legtöbb levéltáros vagy történész két Microsoft program között választ: Excel vagy Access. Ebben a fejezetben megvizsgáljuk, hogy mikor melyiket érdemes használni, és hogyan lehet áttérni Excelből Accessbe.
3.1 Mi az Excel és mi az Access?
Mielőtt eldöntjük, melyiket használjuk, meg kell értenünk, hogy mire tervezték őket. Az Excel és az Access ugyan mindkettő a Microsoft Office része, de alapvetően különböző problémákat oldanak meg.
3.1.1 Excel: A táblázatkezelő (Spreadsheet)
Az Excel 1985-ben jelent meg. Az alapelv egyszerű: egy hatalmas táblázat, ahol minden cella tartalmazhat számot, szöveget vagy képletet.
3.1.1.1 Mire tervezték az Excelt?
1. Számolásra és pénzügyi elemzésre
Az első táblázatkezelők (1970-es évek) számviteli feladatokhoz készültek: költségvetés tervezése, bevételek-kiadások követése, “Mi lenne, ha…” elemzések.
Példa: Költségvetés
A B C D
1 Kategória Terv_Ft Valós_Ft Eltérés_Ft
2 Személyi 5000000 4850000 =C2-B2
3 Dologi 2000000 2150000 =C3-B3
4 Beruházás 3000000 2900000 =C4-B4
5 ───────────────────────────────────────────────
6 Összesen =SUM(B2:B4) =SUM(C2:C4) =SUM(D2:D4)
Ha megváltoztatjuk a B2 cellát → azonnal frissülnek az összes kapcsolódó cella. Ez az Excel erőssége: dinamikus, interaktív számolás.
2. Adatelemzésre és vizualizációra
- Pivot táblák (1994): Húzd-és-dobd összesítések
- Grafikonok: 50+ típus - szépen formázható
- Conditional formatting: Cellák automatikus színezése érték alapján
3. Gyors prototípus készítésére
Az Excel azonnal elindítható, nincs szükség adatbázis-tervezésre - megnyitjuk, beírjuk az adatokat.
Jellemzői:
- Képletek és függvények: 400+ beépített függvény (SUM, AVERAGE, VLOOKUP, IF, DATE…)
- Grafikonok: Szép vizualizációk, interaktív elemek
- Pivot táblák: Gyors összesítések húzd-és-dobd módszerrel
- Makrók (VBA): Programozható automatizálás
Filozófia: Az Excel egy rugalmas, vizuális számológép - gyors, egyszerű, intuitív. Nem adatbázis, hanem munkafelület számoláshoz és elemzéshez.
3.1.2 Access: Az adatbázis-kezelő (RDBMS)
A Microsoft Access 1992-ben jelent meg - egy relációs adatbázis-kezelő rendszer (RDBMS) asztali környezetbe tervezve. A cél az volt, hogy kis- és középvállalatok is elérhető áron tudjanak professzionális adatbázisokat építeni.
3.1.2.1 Mire tervezték az Accesst?
1. Kapcsolatok kezelésére
Az Access relációs modellt valósít meg - Edgar F. Codd 1970-es elméletére épül: táblák, kapcsolatok, referenciális integritás.
Példa: Kutatószolgálat
KUTATÓK tábla:
| Kutató_ID (PK) | Név | Intézmény | |
|---|---|---|---|
| 1 | Kovács János | kovacs@elte.hu | ELTE BTK |
| 2 | Nagy Anna | nagy@ppk.hu | PPKE BTK |
LÁTOGATÁSOK tábla:
| Látogatás_ID (PK) | Kutató_ID (FK) | Dátum | Megjegyzés |
|---|---|---|---|
| 101 | 1 | 2024-11-05 | Kádár-kor kutatás |
| 102 | 1 | 2024-11-12 | Színháztörténet |
| 103 | 2 | 2024-11-06 | Levéltártan |
IRATOK tábla:
| Fond_ID (PK) | Jelzet | Megnevezés |
|---|---|---|
| 5 | XXV-1 | Tanácsi ülések |
| 7 | XXV-2 | Polgármesteri |
KÉRÉSEK kapcsoló tábla (N:M):
| Kérés_ID (PK) | Látogatás_ID (FK) | Fond_ID (FK) |
|---|---|---|
| 1 | 101 | 5 |
| 2 | 101 | 7 |
| 3 | 102 | 5 |
Kapcsolatok: - KUTATÓK ↔︎ LÁTOGATÁSOK: 1:N (egy kutató → több látogatás) - LÁTOGATÁSOK ↔︎ IRATOK: N:M (kapcsoló táblával)
Ez Excelben lehetetlen tisztán megoldani!
2. SQL lekérdezésekre
Az Access SQL-t használ - összetett lekérdezések egyszerűen:
-- Kik látogattak novemberben és milyen fondokat kértek?
SELECT Kutatók.Név, Látogatások.Dátum, Iratok.Jelzet
FROM ((Kutatók
INNER JOIN Látogatások ON Kutatók.Kutató_ID = Látogatások.Kutató_ID)
INNER JOIN Kérések ON Látogatások.Látogatás_ID = Kérések.Látogatás_ID)
INNER JOIN Iratok ON Kérések.Fond_ID = Iratok.Fond_ID
WHERE Látogatások.Dátum BETWEEN #2024-11-01# AND #2024-11-30#;
3. Űrlapokra és jelentésekre
Az Access felhasználói felületet is biztosít:
- Űrlapok: Adatbevitel user-friendly módon, validációval, dropdown listákkal
- Jelentések: Nyomtatható dokumentumok, csoportosítással, összesítésekkel
4. Referenciális integritásra
Az Access garantálja, hogy idegen kulcs mindig létező elsődleges kulcsra mutat - nem lehet törölni szülőt, ha van gyerek rekord.
Filozófia: Az Access egy relációs adatbázis-kezelő - strukturált, szabályozott, integritás-központú. Nem számolásra, hanem adatok biztonságos tárolására és összekapcsolására tervezték.
3.2 Részletes összehasonlítás
3.2.1 Adatstruktúra
Excel: - Munkafüzet → Munkalapok (függetlenek egymástól) - Nincs automatikus kapcsolat - VLOOKUP-pal “kapcsoljuk össze” őket
Access: - Adatbázis → Táblák (kapcsolódnak egymáshoz) - Grafikus relationship designer - Natív JOIN-ok
3.2.2 Adatmennyiség és teljesítmény
| Szempont | Excel | Access |
|---|---|---|
| Max sorok | 1.048.576 | ~2 GB fájl |
| Gyakorlatban | ~10.000 sor | Millió+ |
| 1.000 sornál | Gyors | Gyors |
| 10.000 sornál | Lassul | Gyors |
| 100.000 sornál | Nagyon lassú | Gyors |
Valós példa: 5.000 fond Excelben = 20 mp megnyitás, 15 mp szűrés. Ugyanez Accessben = 2 mp megnyitás, azonnali szűrés.
3.2.3 Kapcsolatok kezelése: VLOOKUP pokla vs JOIN egyszerűsége
3.2.3.1 Hogyan épül fel a relációs struktúra Excelben?
Ha több adatcsoportot szeretnénk külön-külön tárolni és összekapcsolni, minden entitásnak saját munkalapot adunk, és azonosítókkal (ID) hivatkozunk egymásra.
A munkafüzet felépítése – 3 munkalap:
Kutatók ←→ Látogatások ←→ Iratok
Kutatók munkalap – minden kutató egyszer, egy sorban:
| Kutató_ID | Név | Intézmény | |
|---|---|---|---|
| 1 | Kovács János | kovacs@elte.hu | ELTE BTK |
| 2 | Nagy Anna | nagy@ppk.hu | PPKE |
Iratok munkalap – minden fond egyszer, egy sorban:
| Fond_ID | Jelzet | Fond_neve |
|---|---|---|
| 10 | XXV-1 | Tanácsi ülések |
| 11 | XXV-2 | Polgármesteri iratok |
Látogatások munkalap – csak ID-kat tárol, a neveket FKERES hozza be:
| Látogatás_ID | Kutató_ID | Dátum | Fond_ID | Kutató_neve (képlet) | Jelzet (képlet) |
|---|---|---|---|---|---|
| 101 | 1 | 2024-11-05 | 10 | =FKERES(B2;Kutatók!$A:$B;2;0) |
=FKERES(D2;Iratok!$A:$B;2;0) |
| 102 | 2 | 2024-11-12 | 11 | =FKERES(B3;Kutatók!$A:$B;2;0) |
=FKERES(D3;Iratok!$A:$B;2;0) |
A FKERES képlet értelmezése:
=FKERES( B2 ; Kutatók!$A:$B ; 2 ; 0 )
↑ ↑ ↑ ↑
ezt keresem hol keresem 2. pontos
(Kutató_ID) (A oszlop=ID oszlop egyezés
B oszlop=Név) =Név
Két alapszabály:
- Az ID oszlop mindig az első a keresési tartományban
- A tartományon
$jelek – különben másoláskor eltolódik:Kutatók!$A:$B
Előny: Ha Kovács János emailje megváltozik, csak a Kutatók lapon kell javítani – a Látogatások lapon automatikusan frissül.
Korlát: Ez a megoldás olvasásra jól működik, de írásra törékeny. Ha valaki új oszlopot szúr be a Kutatók lap elejére, a FKERES rossz oszlopból olvas – a képletben lévő 2 szám nem követi az elmozdulást.
Excel - FKERES/VLOOKUP problémák:
Két munkalap: KUTATÓK (Kutató_ID, Név) és LÁTOGATÁSOK (Látogatás_ID, Kutató_ID, Dátum).
A LÁTOGATÁSOK-ban minden sorban kell egy FKERES:
=FKERES(B2;Kutatók!$A:$B;2;0)
Problémák: - Törékeny: Oszlop sorrend változik → elromlik - Lassú: Minden cellában újra számol - Korlátozott: Csak jobbra keres - Nincs integritás: Lehet nem létező ID - Karbantartás: Új oszlopnál frissíteni kell a képletet - Hibakezelés: #HIÁNYZIK hibák, ha nincs találat
Valós történet: Beszúrtunk egy új oszlopot a KUTATÓK táblába → 300 sor FKERES elromlott, mert megváltozott az oszlopsorrend!
Access - JOIN egyszerűsége:
SELECT Látogatások.Dátum, Kutatók.Név
FROM Kutatók
INNER JOIN Látogatások
ON Kutatók.Kutató_ID = Látogatások.Kutató_ID;
Vagy grafikusan a Query Designerben! Nincs törékeny képlet, nincs karbantartás.
3.2.4 Adatintegritás
| Funkció | Excel | Access |
|---|---|---|
| Mezőtípus | Nincs ellenőrzés | Szigorú (Text, Number, Date…) |
| Kötelező mezők | Nincs | Required = Yes |
| Egyedi értékek | Nincs automatikus | Primary Key |
| Ref. integritás | Nincs | Enforce Referential Integrity |
| Validáció | Data Validation (korlátozott) | Validation Rule + Input Mask |
Példa: Születési év validáció
Excelben:
1985 ✓ (OK)
nyolcvan ✓ (elfogadja! - ROSSZ)
3025 ✓ (elfogadja! - jövőbeli év)
(üres) ✓ (elfogadja!)
Accessben:
- Data Type: Number
- Required: Yes
- Validation Rule: Between 1900 And Year(Date())
- Input Message: “Adjon meg egy születési évet 1900-2024 között”
- Ha hibás → NEM ENGEDI ELMENTENI
3.2.5 Felhasználói felület
Excel: Cellák - gyors, de veszélyes (könnyen el lehet rontani, bárki bármit beírhat)
Access: Űrlapok - user-friendly, biztonságos
┌─────────────────────────────┐
│ Új kutató felvétele │
├─────────────────────────────┤
│ Név: [____________] │
│ Email: [___________] │
│ Intézmény: [▼ ELTE BTK] │
│ │
│ [Mentés] [Mégse] [Törlés] │
└─────────────────────────────┘
3.2.6 Több felhasználó egyidejű munkája
Excel: - Egyszerre csak egy ember tud írni - Megosztott munkafüzet létezik, de korlátozott és gyakori ütközés - Verziókonfliktusok
Access: - Split Database: Több ember dolgozhat egyidejűleg - Record locking: Ki kinek a sorát szerkeszti - Nincs verziókonfliktus
3.2.7 Amit az Excel jobban tud
Számítások és képletek: SUM, AVERAGE, IF, komplex pénzügyi függvények
Grafikonok: Gyönyörű vizualizációk, sok típus
Pivot táblák: Interaktív, húzd-és-dobd elemzés
Gyors prototípus: Azonnal kezdhetünk
Ad-hoc elemzés: Szabadon kísérletezhetünk
Következtetés: Excel és Access kiegészítők, nem konkurensek!
Gyakori workflow: 1. Excel → Adatgyűjtés, gyors bevitel 2. Access → Strukturálás, kapcsolatok, hosszú távú tárolás 3. Excel → Exportálás, statisztikák, grafikonok elemzéshez
3.3 Átmenet Excelből Accessbe - Lépésről lépésre
Ha már van egy Excel táblázatunk, de rájöttünk, hogy Access jobb lenne, át kell vinniünk az adatokat. Ez NEM egyszerű másolás-beillesztés - előkészítés és tervezés szükséges!
3.3.1 1. lépés: Tisztítsuk meg az Excel adatokat
Az Excel rugalmas - bármit megenged. Az Access szigorú - csak tiszta, strukturált adatokat fogad el.
3.3.1.1 1.1 Távolítsuk el az üres sorokat
Probléma: Üres sorok az adatok között - Access nem tudja, hol van vége.
Megoldás: 1. Jelöljük ki az A oszlopot 2. Home → Find & Select → Go To Special… 3. Válasszuk: Blanks 4. Jobb klikk → Delete → Delete Sheet Rows
3.3.1.2 1.2 Első sor = Fejléc (és CSAK az!)
Probléma: Cím, magyarázat a táblázat felett.
Megoldás: Töröljük az 1. sor előtti minden sort. Maradjon CSAK a fejléc az 1. sorban.
Jó fejléc:
- Rövid, értelmes nevek
- Nincs szóköz (használjanak _ vagy CamelCase-t)
- Nincs spec. karakter
3.3.1.3 1.3 Nincs összevont cella
Megoldás: 1. Jelöljük ki az egész táblát (Ctrl+A) 2. Home → Merge & Center → Unmerge Cells
3.3.2 2. lépés: Tervezzük meg az Access struktúrát
NE rohanjanak azonnal importálni! Először gondoljuk végig a struktúrát.
3.3.2.1 2.1 Milyen táblák kellenek?
Kérdések: 1. Milyen entitások vannak? 2. Minden entitásnak külön tábla!
Példa: Kutatószolgálat
Excel tábla (rossz):
Kutató_név | Email | Dátum | Fond | Téma
Kovács János | kovacs@elte.hu | 2024-11-05 | XXV-1 | Kádár-kor
Kovács János | kovacs@elte.hu | 2024-11-05 | XXV-2 | Kádár-kor ← redundancia!
Entitások: 1. Kutatók 2. Iratok 3. Látogatások
Access táblák: - KUTATÓK (Kutató_ID, Név, Email, Téma) - Iratok (Fond_ID, Jelzet, Megnevezés) - LÁTOGATÁSOK (Látogatás_ID, Kutató_ID, Dátum) - KÉRÉSEK (Kérés_ID, Látogatás_ID, Fond_ID) - kapcsoló tábla N:M-hez
3.3.3 3. lépés: Importáljuk Accessbe
3.3.3.1 3.1 Access megnyitása
- Nyissuk meg Access-t
- Blank Database
- Fájlnév:
Kutatoszolgalat.accdb - Create
3.3.3.2 3.2 Excel fájl importálása
- External Data fül
- New Data Source → From File → Excel
- Browse… → Válasszuk ki az Excel fájlt
- OK
Import Wizard:
- Show Worksheets → Jelöljük be a munkalapot → Next
- ☑ “First Row Contains Column Headings” → Next
- Ellenőrizzük az adattípusokat (Text/Number/Date) → Next
- “Let Access add primary key” → Next
- Tábla neve (pl.
FONDOK) → Finish
3.3.4 4. lépés: Definiáljuk a kapcsolatokat
3.3.4.1 4.1 Relationships ablak
- Database Tools → Relationships
- Jobb klikk → Show Table…
- Adjunk hozzá minden táblát → Close
3.3.4.2 4.2 Kapcsolat létrehozása
KUTATÓK ↔︎ LÁTOGATÁSOK (1:N):
- Húzzuk Kutató_ID-t KUTATÓK-ból → LÁTOGATÁSOK-ba
- ☑ Enforce Referential Integrity
- Cascade Update (NE)
- Cascade Delete (NE - veszélyes!)
- Create
Mit jelent az Enforce Referential Integrity?
Ez garantálja, hogy: - Nem törölhetünk kutatót, akinek van látogatása - Nem írhatunk be nem létező Kutató_ID-t - Adatkonzisztencia garantált
☐ Cascade Update Related Fields: - Ha megváltoztatjuk a szülő elsődleges kulcsát → automatikusan frissül az összes gyerek idegen kulcs - Példa: Kutató_ID = 1 → 100 megváltozik → Access automatikusan átírja az összes Látogatás.Kutató_ID = 1-et 100-ra - Miért NE? Az elsődleges kulcsot sosem kellene megváltoztatni! Ha mégis szükséges, akkor tudatosan, manuálisan tegyük - így látjuk a következményeket.
☐ Cascade Delete Related Records: - Ha törlünk egy szülő rekordot → automatikusan törlődik az összes hozzá tartozó gyerek rekord is - Példa: Törlik Kovács János kutatót → Access automatikusan törli az összes látogatását, kérését, megjegyzését - Miért NE? Adatvesztés veszély! Egy véletlen törlés sok értékes adatot törölhet. Levéltári nyilvántartásban ez elfogadhatatlan.
Ajánlott megoldás: - Soft delete: Ne töröljünk, hanem jelöljük inaktívnak - Adjunk hozzá egy “Aktív” mezőt (Igen/Nem) - Törlés helyett: Aktív = Nem - Így megmarad minden adat, de nem jelenik meg a szokásos lekérdezésekben
3.4 Ellenőrző kérdések
- Mi a fő különbség az Excel és Access filozófiájában?
- Hogyan lehet Excelben több munkalap adatait összekapcsolni? Írja le a szükséges lépéseket!
- Milyen konkrét problémák vannak a FKERES használatával több munkalap összekapcsolásakor?
- Mit jelent az adatintegritás? Hogyan biztosítja Access?
- Mikor érdemes Excelt használni Access helyett?
- Mit jelent a referenciális integritás? Miért fontos?
- Milyen lépések szükségesek az Excel → Access átmenethez?
- Miért veszélyes a Cascade Delete opció?
- Hány rekordnál kezd lassulni az Excel a gyakorlatban?
- Hogyan működik a kapcsoló tábla N:M kapcsolatnál?
- Mit kell ellenőrizni az Excel importálása előtt?