Soluții

How to built an Excel dashboard without writing a single formula

I’ve built Excel dashboards for years, and almost every one relied on some combination of XLOOKUPs, dynamic arrays, SUMIFS, helper columns, and other worksheet formulas. So I challenged myself to build a dashboard without writing a single worksheet formula, and it completely changed how I’ll approach them in the future.

To test the idea, I built a dashboard around my movie-watching history, linking my viewing log to a movie database. Instead of combining everything into one giant worksheet, I wanted to see whether Excel’s built-in Data Model could handle the relationship for me.

The first step I would usually take was to add columns to my raw data and use formulas to bring in details from my database. This often meant filling thousands of cells with XLOOKUP statements before I even started building the dashboard. It was a habit I picked up early in my spreadsheet career: flatten everything into one large table first, then analyze it.

This time, I converted both datasets into Excel tables, then added them to the Data Model. There, I connected the “MovieID” fields between the two tables in Diagram View. As a result, instead of repeating the same movie details across thousands of rows, I created a single connection.

That small test proved the entire concept. The movie information lived in one table, the viewing activity lived in another, and Excel combined them through the relationship I had created. This made it clear that in eliminating formulas, I was actually eliminating unnecessary work.

One successful summary snowballed into the entire reporting hub

Like many dashboard builds, mine usually became harder to manage as more metrics were added. If I wanted totals by genre, platform, year, or movie, I’d create another calculation area, then build visuals around those results. Every new metric meant another set of formulas to create, format, and check.

However, here, because I had already built the Data Model, creating new dashboard metrics became a case of choosing the fields I wanted to analyze rather than building another calculation layer. Using this workflow, I created:

  • A top 10 most-watched movies ranking using “Title” from the “Movies” table and “Count of ViewingID” from the “ViewingHistory” table. I sorted the PivotTable by viewing count and used the built-in Top 10 filter to show only the most-watched titles.
  • A year-by-year viewing trend using “WatchDate” from the “ViewingHistory” table. Grouping the dates by year turned thousands of records into a simple timeline showing how my habits changed over time.
  • KPI cards showing things like total viewing sessions, total watch time, and average personal rating.

The biggest change was that I no longer needed to decide which formula was the right tool for each problem. Yes, the tables and KPI cards still needed tidying up, but I could see things were starting to take shape.

I built charts without creating formula-driven tables

In my previous dashboard builds, creating a chart usually meant building lookup formulas to enrich the raw data, creating separate summary ranges, then pointing my charts at those results. The chart itself was rarely the difficult part—the work was creating and maintaining the data behind it.

This time, the PivotTables I already created became the foundation for many of my visuals—in this case, PivotCharts. For charts that needed a different view of the data, I also created a separate Pivots worksheet containing supporting summaries that didn’t need to appear on the dashboard.

For example, I created a PivotTable showing viewing activity by platform, then turned it into a column chart. I created another showing viewing trends by month using the “WatchDate” field from my “ViewingHistory” table, grouping the dates so Excel could display how my viewing habits changed over time. Each PivotTable was created from the same connected model, meaning I could build new views of my data without adding another layer of formulas.

What struck me most was how much hidden maintenance work had disappeared from behind every visual. The Data Model handled the relationships, PivotTables handled the calculations, and PivotCharts turned those results into visuals.

Slicers made the dashboard feel like a BI tool

Adding interactivity in Excel often means inserting data validation drop-down lists, FILTER formulas, or additional helper areas. These work, but they create more moving parts that need maintaining.

Because my dashboard was built from PivotTables connected to the Data Model, I could add interactive controls without creating any additional calculations. I inserted Slicers for platform and genre, then added a Timeline control for filtering by watch date.

Once I connected those controls across the dashboard, I could combine multiple filters at once, narrowing my dashboard to a specific genre on a particular platform within a certain time period. Excel handled each interaction automatically, without requiring additional formulas or helper columns behind the scenes. The moment I realized I could explore thousands of viewing records by clicking a few buttons, the workbook started behaving like a lightweight, purpose-built app.

I added new viewing data without rebuilding anything

After adding the final formatting touches to my dashboard—like resizing columns so PivotTable details weren’t cut off, renaming the PivotTable fields, hiding unnecessary PivotChart field buttons, and aligning Slicers into a clean navigation panel—it was time to test whether the whole thing would update when I added more viewing data.

The real test of any dashboard isn’t how it looks, but how easily it handles fresh data. In a formula-driven dashboard, this was the point where I would normally check whether formulas had copied down correctly, calculation ranges included the new records, and every summary still captured the latest information.

Before testing the refresh, I enabled Excel’s options to preserve PivotTable formatting and stopped automatic column resizing, preventing my carefully arranged dashboard from changing every time the data updated.

Then, I pasted another month of viewing records into my “ViewingHistory” table and clicked Refresh All on the Data tab. This updated the Data Model with the additional records, recalculated every PivotTable, updated the charts, and expanded the Timeline to include the new dates.

I‘m changing how I approach every dashboard I build

The biggest lesson from this dashboard wasn’t that formulas are bad—it was that I had been solving dashboard problems at the worksheet level when Excel had better tools built in. From now on, I’ll approach dashboards differently: clean tables first, relationships second, and visuals last. To finish this workbook, I’ll add a README sheet explaining how everything works and a table of contents to make navigation easier, especially if I ever share it with others, use it as a template, or return to it months later.

[mai mult...]

Diagnosticarea și rezolvarea erorii „Kernel panic – not syncing: Attempted to kill init!”

1. Introducere și definirea erorii

Eroarea Kernel panic - not syncing: Attempted to kill init! reprezintă o stare critică de eroare neremediabilă în sistemele de operare Linux. În această stare, nucleul (kernel-ul) oprește complet executarea oricărei instrucțiuni pentru a preveni coruperea datelor sau deteriorarea fizică a sistemului de fișiere.

Mesajul indică direct faptul că primul proces lansat de kernel la pornirea sistemului (procesul cu PID 1, numit init sau systemd) a fost oprit neașteptat sau a fost terminat forțat (killed). Deoarece procesul init este „părintele” tuturor celorlalte procese din sistem, oprirea lui face imposibilă funcționarea în continuare a sistemului de operare.

2. Cauzele principale ale erorii

Defectarea sau prăbușirea procesului init are loc, în general, în prima fază de boot (încărcare) a sistemului și este cauzată de următoarele categorii de probleme:

A. Coruperea sau lipsa imaginii initramfs / initrd

Imaginea Initial RAM Disk (initramfs) conține driverele și modulele necesare kernelului pentru a putea citi și monta discul principal. Dacă această imagine este coruptă, lipsă sau a fost generată greșit după o actualizare de kernel, sistemul nu poate lansa init.

B. Probleme legate de configurarea Bootloader-ului (GRUB)

  • Anumiți parametri de boot din configurarea GRUB trimit kernelul către un disc greșit (ex: o adresă root=UUID=... incorectă).

  • Parametrul init= arată către o cale inexistentă (ex: /sbin/init lipsește sau este corupt).

C. Coruperea sistemului de fișiere sau a discului (Filesystem / Hardware)

  • Sector defect pe disc (SSD/HDD) în zona unde se află executabilul /sbin/init sau /lib/systemd/systemd.

  • Corupere cauzată de o oprire necorespunzătoare a alimentării cu energie electrică.

D. Lipsa spațiului pe disc în timpul actualizărilor (/boot plin)

O cauză extrem de frecventă pe servere și calculatoare de birou este umplerea partiției /boot. Dacă la un update de sistem (apt upgrade / dnf update) discul este $100\%$ plin, noul kernel sau imaginea initramfs se va scrie parțial, rezultând o imagine invalidă la următorul restart.

E. Neconcordanță între arhitectura sistemului și module

Executarea unui kernel pe $64$ de biți cu un proces init compilat pentru o altă arhitectură necompatibilă sau din cauza unor permisiuni de fișiere alterate (/sbin/init și-a pierdut drepturile de execuție chmod +x).

3. Ghid 

Când întâmpinați această eroare, sistemul nu mai poate porni normal. Rezolvarea necesită intervenția prin mediul de recuperare (GRUB sau un Live USB).

Pasul 1: Pornirea dintr-o versiune anterioară de Kernel (Meniul GRUB)

Aceasta este cea mai rapidă metodă de testare și recuperare:

  1. Reporniți sistemul și țineți apăsată tasta Shift sau Esc pentru a afișa meniul GRUB.

  2. Selectați Advanced options for Ubuntu/Debian/RHEL.

  3. Alegeți o versiune anterioară de kernel (de exemplu, o versiune mai veche care nu are eticheta recovery mode).

  4. Dacă sistemul pornește cu succes, problema este legată strict de ultimul kernel instalat sau de imaginea sa initramfs.

Pasul 2: Regenerarea imaginii initramfs

Dacă ați reușit să intrați într-un kernel vechi sau folosind un Live USB (prin metoda chroot), regenerați fișierele de boot:

  • Pe sisteme bazate pe Debian / Ubuntu:

    Bash

    sudo update-initramfs -u -k all
    sudo update-grub
    
  • Pe sisteme bazate pe RHEL / CentOS / Fedora:

    Bash

    sudo dracut --regeneration --force
    sudo grub2-mkconfig -o /boot/grub2/grub.cfg
    

Pasul 3: Repararea sistemului de fișiere (fsck)

Dacă eroarea este provocată de un disc corupt:

  1. Porniti dintr-un Live USB/CD de Linux.

  2. Deschideți un terminal și identificați partiția de sistem (ex: /dev/sda1 sau /dev/nvme0n1p2) cu comanda lsblk.

  3. Rulați verificarea și repararea partiției:

    Bash

    sudo fsck -y /dev/sda1
    

Pasul 4: Curățarea spațiului din partiția /boot

Dacă partiția /boot este plină și a blocat actualizarea:

  1. Porniți din Live USB și montati partiția de sistem.

  2. Ștergeți kernel-urile vechi nefuncționale sau fișierele temporare nefinalizate din /boot.

  3. Rulați comanda de curățare a pachetelor incomplete:

    Bash

    # Dintr-un mediu chroot:
    apt-get clean
    apt-get autoremove
    dpkg --configure -a
    

4. Măsuri de prevenție

  • Evitați umplerea partiției /boot: Configurați sistemul să păstreze doar 2-3 imagini de kernel (utilizați opțiuni de curățare automată precum Purgeremovedupes sau installonly_limit în managerul de pachete).

  • Nu opriți forțat calculatorul în timpul actualizărilor: Închiderea alimentării în timp ce se execută comenzi de tip update-initramfs sau dracut va deteriora garantat fișierele de boot.

  • Folosiți surse de alimentare neîntreruptibile (UPS): Pe servere de producție, întreruperile bruște de curent sunt principala cauză a coruperii procesului init și a sistemului de fișiere.

[mai mult...]