Programmieren – die besten Beiträge

Excel | Lebensmittel-Datenbank: Allgemeine Suche + Filtern?

Guten Tag liebe GF-Community.

Gestern habe ich damit angefangen meine neue Lebensmittel-Datenbank zu bauen. Die "Lebensmittel-Datenbank" habe ich in eine Intelligente-Tabelle? (mit Filter) umgewandelt sodass sie ständig aktualisiert wird, wenn ich etwas hinzufüge.

Hier ein Foto:

Jetzt möchte ich das alles aber etwas komplexer gestalten.

Und zwar möchte ich mir viele Informationen auf der Startseite anzeigen lassen:

  • Zum einen die Hauptkategorien mit einer Anzahl wie viel Lebensmittel sich in dieser Kategorie eigentlich befinden.
  • Irgendwann möchte ich auch noch eine Anzeige mit Name/Hersteller (bspw. Ferrero für Nutella usw.)
  • Eine vollwertige Suche in der gesamten Datenbank für alle Namen (ID, Name, Kategorie).
  • Außerdem möchte ich auch Filtern können nach gewissen Definitionen (bspw. In Obst sind 90 Lebensmittel drin und wenn ich Obst suche das mir nur das angezeigt wird. So auch mit allen Kategorien und Namen/Marken)
  • Außerdem eine Dropdown Auswahl-Liste wo ich alles mögliche Auswählen kann. Nach ID, Name, Marke, Kategorie, Kcal, KH, Fett usw.
  • Und Ich möchte in dem Datenbank-Blatt selber eine Interne Suche nach allem mit Filterung

Die Datenbank ist folgendermaßen aufgebaut:

  1. Lebensmittel-ID
  2. Name
  3. Marke/Hersteller
  4. Hauptkategorie
  5. Unterkategorie
  6. Synonym/Bezeichnung
  7. Artikel Nr.
  8. Einheit
  9. Energie/Kcal
  10. Eiweiß
  11. Kohlenhydrate
  12. Fett
  13. Zucker
  14. Gesättigte Fettsäuren
  15. Ungesättigte Fettsäuren
  16. Mehrfach Ungesättigte Fettsäuren
  17. Ballaststoffe
  18. Alkohol
  19. Koffein
  20. Cholesterin
  21. Salz
  22. Wasser
  23. Chlorid
  24. Chrom
  25. Eisen
  26. Fluorid
  27. Jod
  28. Kalium
  29. Kalzium
  30. Kupfer
  31. Magnesium
  32. Mangan
  33. Natrium
  34. Phosphor
  35. Schwefel
  36. Selen
  37. Zink
  38. Vitamin A
  39. Vitamin B
  40. Vitamin B1
  41. Vitamin B12
  42. Vitamin B2
  43. Vitamin B3
  44. Vitamin B5
  45. Vitamin B6
  46. Vitamin B9
  47. Vitamin C
  48. Vitamin D
  49. Vitamin E
  50. Vitamin H
  51. Vitamin K
  52. Nutri-Score*

Nutri-Score*: Auch dort hätte ich gerne funktion die mir nach Eintrag jedes Lebensmittel automatisch den Nutri-Score Wert in Form von Buchstaben und Farbe anzeigt.

Und ich möchte in einem extra Blatt eine Eingabe Möglichkeit in der ich neue Daten eintragen kann und diese dann Automatisch in der Datenbank landen.

Ich kann mir vorstellen das sowas nur in Verbindung mit VBA klappt. Leider bin ich kein VBA oder gar krasser Excel Profi. Ich kenne nur einige kleine Sachen durch das Lernen von damaligen Videos die ich vor Jahren angesehen habe.

Wäre sowas irgendwie möglich? Kann mir da wer helfen oder Tipps geben?

Ich möchte das für mich Privat haben und mache das natürlich für kein Unternehmen oder so.

Vielen Dank im Voraus!

Mit freundlichen Grüßen

Robin | TechBrain.

Bild zum Beitrag
PC, Computer, Arbeit, Software, Windows, Microsoft, Office, App, Microsoft Excel, Programm, programmieren, VBA, Büro, Datenbank

C++ Code für LGS?

Ich möchte mit einen C++-Programm alle LGS lösen können (endlich, unendlich und keine Lösungen). Ich habe auch einen Code. Endlich viele und keine Lösungen kann er recht gut (bisher), aber unendlich viele Lösungen kann er nicht anzeigen lassen (soll dann auch t einführen, nicht einfach einen Wert einsetzen).

Wo liegt der Fehler?

#include <iostream>
#include <vector>
#include <cmath>

using namespace std;

// Funktion zur Berechnung des Determinanten einer Matrix
double determinant(vector<vector<double>>& matrix, int n) {
  double det = 0;

  if (n == 1) {
    return matrix[0][0];
  }

  if (n == 2) {
    return matrix[0][0] * matrix[1][1] - matrix[0][1] * matrix[1][0];
  }

  for (int i = 0; i < n; i++) {
    vector<vector<double>> subMatrix(n - 1, vector<double>(n - 1));

    for (int j = 1; j < n; j++) {
      for (int k = 0; k < n; k++) {
        if (k < i) {
          subMatrix[j - 1][k] = matrix[j][k];
        }
        else if (k > i) {
          subMatrix[j - 1][k - 1] = matrix[j][k];
        }
      }
    }

    det += pow(-1, i) * matrix[0][i] * determinant(subMatrix, n - 1);
  }

  return det;
}
 
// Funktion zur Durchführung der Gauss-Jordan-Elimination
void gaussJordan(vector<vector<double>>& matrix, vector<double>& constants) {
  int n = matrix.size();

  for (int i = 0; i < n; i++) {
    int maxIndex = i;

    for (int j = i + 1; j < n; j++) {
      if (abs(matrix[j][i]) > abs(matrix[maxIndex][i])) {
        maxIndex = j;
      }
    }

    if (maxIndex != i) {
      swap(matrix[maxIndex], matrix[i]);
      swap(constants[i], constants[maxIndex]); // Korrektur hier
    }

    double factor = matrix[i][i];

    for (int j = i; j < n; j++) {
      matrix[i][j] /= factor;
    }

    constants[i] /= factor;

    for (int j = 0; j < n; j++) {
      if (j != i) {
        double factor = matrix[j][i];

        for (int k = i; k < n; k++) {
          matrix[j][k] -= factor * matrix[i][k];
        }

        constants[j] -= factor * constants[i];
      }
    }
  }
}

// Funktion zur Überprüfung der Invertierbarkeit und zur Lösung des LGS
vector<double> solveLinearSystem(vector<vector<double>>& matrix, vector<double>& constants) {
  int n = matrix.size();
  double det = determinant(matrix, n);

  // Überprüfung auf unendlich viele Lösungen
  bool allZero = true;

  for (double constant : constants) {
    if (constant != 0) {
      allZero = false;
      break;
    }
  }

  if (det == 0) {
    if (allZero) {
      cout << "Das LGS hat unendlich viele Lösungen." << endl;
      return {}; // Leerer Vektor, da unendlich viele Lösungen existieren
    }
    else {
      cout << "Das LGS hat keine Lösung." << endl;
      return {}; // Leerer Vektor, da keine Lösung existiert
    }
  }

  // Anwendung der Gauss-Jordan-Elimination
  gaussJordan(matrix, constants);

  vector<double> solution(n);

  for (int i = 0; i < n; i++) {
    solution[i] = constants[i];
  }

  return solution;
}

int main() {
  vector<vector<double>> matrix = {
    { 1, -3,  5 },
    { 2, -5,  12 },
    { 3, -11,  11 }
  };
  vector<double> constants = { 2, 1, 12 };

  vector<double> solution = solveLinearSystem(matrix, constants);

  if (!solution.empty()) {
    cout << "Die Lösung des LGS ist: ";

    for (int i = 0; i < solution.size(); i++) {
      cout << "x" << i + 1 << " = " << solution[i] << ", ";
    }

    cout << endl;
  }
  else {
    cout << "Das LGS hat keine Lösung." << endl;
  }

  return 0;
}
Schule, Mathematik, programmieren, Cplusplus, Mathematiker, Programmiersprache, Algorithmus, lineare Gleichungssysteme

Crawler geht nicht weiter, wenn fertig mit einer URL?

Hallo zusammen,

ich arbeite gerade an einem Python-Crawler, der spezifisch für die Website beispielurl.de entwickelt wurde. Mein Ziel ist es, verschiedene Unterseiten zu crawlen, die jeweils unterschiedlichen Kategorien angehören, wie z.B. "Flaschenhersteller" und "Kartenhersteller". Der Crawler soll automatisch von einer Kategorie (z.B. beispielurl.de/Flaschenhersteller/page-1, beispielurl.de/Flaschenhersteller/page-2, usw.) zur nächsten wechseln (z.B. beispielurl.de/Kartenhersteller/page-1, beispielurl.de/Kartenhersteller/page-2, usw.), sobald alle Seiten der aktuellen Kategorie durchlaufen sind.

Leider funktioniert der Wechsel zwischen den Kategorien nicht wie erwartet. Der Crawler verarbeitet alle Seiten der ersten Kategorie korrekt, aber anstatt zur nächsten Kategorie zu wechseln, beginnt er wieder von vorn bei der ersten Kategorie, ohne die nachfolgenden Kategorien zu berücksichtigen.

Hier ist ein vereinfachter Ausschnitt meines Codes:

def process_page(self, url):
  soup = self.fetch_page_with_selenium(url)
  links = self.extract_PLZ_links(soup)

  for link in links:
    self.fetch_PLZ_details(link)

def run(self):
  try:
    for code in self.postal_codes:
      page_number = 1
      has_more_pages = True

      while has_more_pages:
        url = f"{self.base_url}/suche/-/{code}?page={page_number}"
        soup = self.fetch_page_with_selenium(url)
        links = self.extract_PLZ_links(soup)

        if links:
          for link in links:
            self.fetch_PLZ_details(link)
            page_number += 1
        else:
          has_more_pages = False
  finally:
    self.driver.quit()
    self.csv_handler.close_csv()

Hersteller = [Flaschenhersteller, Kartenhersteller, etc. ]
crawler = WebCrawler("https://beispielurl.de", Hersteller)
crawler.run()

Hat jemand eine Idee, warum der Crawler nicht zur nächsten Kategorie wechselt und wie ich dieses Problem beheben könnte? Ich bin für jeden Tipp dankbar!

HTML, Webseite, programmieren, Code, Python, Webentwicklung, crawler, Python 3

Meistgelesene Beiträge zum Thema Programmieren