{
  "nastroj": {
    "nazev": "snimek",
    "verze": "1.0.0",
    "vytvoreno": "2026-08-23T13:56:17"
  },
  "soubor": {
    "nazev": "Kalkulace_ceniku_2019_FINAL_v3_opraveno.xlsm",
    "cesta": "/home/jerry/projects/excel-zachrana/vzorek/Kalkulace_ceniku_2019_FINAL_v3_opraveno.xlsm",
    "velikost_bajtu": 45161,
    "velikost_mb": 0.04,
    "sha256": "43c03cd4a462ada973a0795e80f1e21fb9eb55f21fc62e22eed5949ea0ff89ea",
    "pripona": "xlsm",
    "obsahuje_makra": true,
    "casti_balicku": 45
  },
  "souhrn": {
    "pocet_listu": 34,
    "listu_viditelnych": 23,
    "listu_skrytych": 6,
    "listu_velmi_skrytych": 5,
    "pocet_bunek_s_obsahem": 991,
    "pocet_vzorcu": 592,
    "pocet_hran_mezi_listy": 80,
    "pocet_odkazu_mezi_listy": 545,
    "hloubka_retezu": 13,
    "pocet_kruhovych_odkazu": 2,
    "pocet_ulozenych_chyb": 6,
    "pocet_volatilnich_bunek": 38,
    "pocet_vzorcu_s_konstantou": 84,
    "pocet_bunek_s_externim_odkazem": 3,
    "pocet_externich_sesitu": 1,
    "pocet_pojmenovanych_oblasti": 13,
    "pocet_rozbitych_pojmenovanych_oblasti": 6,
    "pocet_pravidel_formatovani": 396,
    "pocet_sloucenych_oblasti_v_datech": 3,
    "pocet_cisel_jako_text": 8,
    "pocet_zamcenych_listu": 3,
    "nejdelsi_vzorec_znaku": 723,
    "nejdelsi_vzorec_bunka": "Kalkulace!H4",
    "vba_pritomno": true,
    "vba_radku_kodu": 140,
    "vba_modulu": 36,
    "pocet_kontingencnich_cache": 0
  },
  "index_krehkosti": {
    "hodnota": 63,
    "pasmo": "vysoká",
    "vyklad_pasma": "Sešit počítá věci, které nikdo neumí ověřit. Pokračovat bez opravy znamená nést riziko chyby ve výstupu, který jde ven.",
    "vzorec": "index = min(100, Σ_složky strop × min(1, Σ_metriky váha × min(1, hodnota / reference)))",
    "poznamka": "Referenční hodnoty a váhy jsou zapsaná rozhodnutí, ne naměřené konstanty. Celý rozpis je v README.md.",
    "slozky": [
      {
        "klic": "rozsah",
        "nazev": "Rozsah sešitu",
        "strop_bodu": 12,
        "body": 6.3,
        "dilci_metriky": [
          {
            "metrika": "počet listů",
            "klic": "pocet_listu",
            "hodnota": 34,
            "reference": 40,
            "vaha": 0.5,
            "nasyceni": 0.85
          },
          {
            "metrika": "počet vzorců",
            "klic": "pocet_vzorcu",
            "hodnota": 592,
            "reference": 3000,
            "vaha": 0.5,
            "nasyceni": 0.197
          }
        ]
      },
      {
        "klic": "provazanost",
        "nazev": "Provázanost mezi listy",
        "strop_bodu": 14,
        "body": 14.0,
        "dilci_metriky": [
          {
            "metrika": "počet vazeb mezi listy",
            "klic": "pocet_hran_mezi_listy",
            "hodnota": 80,
            "reference": 60,
            "vaha": 0.4,
            "nasyceni": 1.0
          },
          {
            "metrika": "hloubka řetězu výpočtu",
            "klic": "hloubka_retezu",
            "hodnota": 13,
            "reference": 8,
            "vaha": 0.3,
            "nasyceni": 1.0
          },
          {
            "metrika": "podíl listů zapojených do vazeb",
            "klic": "podil_provazanych_listu",
            "hodnota": 1.0,
            "reference": 1.0,
            "vaha": 0.3,
            "nasyceni": 1.0
          }
        ]
      },
      {
        "klic": "skryte",
        "nazev": "Skryté a duplicitní struktury",
        "strop_bodu": 10,
        "body": 9.1,
        "dilci_metriky": [
          {
            "metrika": "skryté listy",
            "klic": "listu_skrytych",
            "hodnota": 6,
            "reference": 8,
            "vaha": 0.35,
            "nasyceni": 0.75
          },
          {
            "metrika": "velmi skryté listy",
            "klic": "listu_velmi_skrytych",
            "hodnota": 5,
            "reference": 3,
            "vaha": 0.35,
            "nasyceni": 1.0
          },
          {
            "metrika": "listy v duplicitních skupinách",
            "klic": "listu_v_duplicitach",
            "hodnota": 8,
            "reference": 8,
            "vaha": 0.3,
            "nasyceni": 1.0
          }
        ]
      },
      {
        "klic": "konstanty",
        "nazev": "Natvrdo zadané konstanty",
        "strop_bodu": 10,
        "body": 8.3,
        "dilci_metriky": [
          {
            "metrika": "vzorce s konstantou",
            "klic": "pocet_vzorcu_s_konstantou",
            "hodnota": 84,
            "reference": 60,
            "vaha": 0.6,
            "nasyceni": 1.0
          },
          {
            "metrika": "podíl vzorců s konstantou",
            "klic": "podil_vzorcu_s_konstantou",
            "hodnota": 0.1419,
            "reference": 0.25,
            "vaha": 0.4,
            "nasyceni": 0.568
          }
        ]
      },
      {
        "klic": "volatilita",
        "nazev": "Volatilní funkce",
        "strop_bodu": 8,
        "body": 6.2,
        "dilci_metriky": [
          {
            "metrika": "volatilní buňky",
            "klic": "pocet_volatilnich_bunek",
            "hodnota": 38,
            "reference": 60,
            "vaha": 0.6,
            "nasyceni": 0.633
          },
          {
            "metrika": "podíl volatilních vzorců",
            "klic": "podil_volatilnich",
            "hodnota": 0.0642,
            "reference": 0.05,
            "vaha": 0.4,
            "nasyceni": 1.0
          }
        ]
      },
      {
        "klic": "chyby",
        "nazev": "Chyby a rozbité odkazy",
        "strop_bodu": 16,
        "body": 8.6,
        "dilci_metriky": [
          {
            "metrika": "uložené chybové hodnoty",
            "klic": "pocet_ulozenych_chyb",
            "hodnota": 6,
            "reference": 20,
            "vaha": 0.3,
            "nasyceni": 0.3
          },
          {
            "metrika": "odkazy na neexistující listy",
            "klic": "pocet_odkazu_na_chybejici_list",
            "hodnota": 0,
            "reference": 10,
            "vaha": 0.25,
            "nasyceni": 0.0
          },
          {
            "metrika": "rozbité pojmenované oblasti",
            "klic": "pocet_rozbitych_pojmenovanych_oblasti",
            "hodnota": 6,
            "reference": 6,
            "vaha": 0.2,
            "nasyceni": 1.0
          },
          {
            "metrika": "kruhové odkazy",
            "klic": "pocet_kruhovych_odkazu",
            "hodnota": 2,
            "reference": 2,
            "vaha": 0.25,
            "nasyceni": 1.0
          }
        ]
      },
      {
        "klic": "externi",
        "nazev": "Vazby ven ze sešitu",
        "strop_bodu": 8,
        "body": 1.9,
        "dilci_metriky": [
          {
            "metrika": "externí sešity",
            "klic": "pocet_externich_sesitu",
            "hodnota": 1,
            "reference": 3,
            "vaha": 0.5,
            "nasyceni": 0.333
          },
          {
            "metrika": "buňky s externím odkazem",
            "klic": "pocet_bunek_s_externim_odkazem",
            "hodnota": 3,
            "reference": 20,
            "vaha": 0.5,
            "nasyceni": 0.15
          }
        ]
      },
      {
        "klic": "vba",
        "nazev": "Makra",
        "strop_bodu": 10,
        "body": 4.6,
        "dilci_metriky": [
          {
            "metrika": "řádky kódu VBA",
            "klic": "vba_radku_kodu",
            "hodnota": 140,
            "reference": 500,
            "vaha": 0.5,
            "nasyceni": 0.28
          },
          {
            "metrika": "rizikové konstrukce ve VBA",
            "klic": "vba_rizikove_konstrukce",
            "hodnota": 4,
            "reference": 10,
            "vaha": 0.3,
            "nasyceni": 0.4
          },
          {
            "metrika": "zamčený projekt VBA",
            "klic": "vba_zamceno",
            "hodnota": 1,
            "reference": 1,
            "vaha": 0.2,
            "nasyceni": 1.0
          }
        ]
      },
      {
        "klic": "hygiena",
        "nazev": "Datová hygiena",
        "strop_bodu": 8,
        "body": 1.5,
        "dilci_metriky": [
          {
            "metrika": "čísla uložená jako text",
            "klic": "pocet_cisel_jako_text",
            "hodnota": 8,
            "reference": 40,
            "vaha": 0.35,
            "nasyceni": 0.2
          },
          {
            "metrika": "sloučené buňky v datech",
            "klic": "pocet_sloucenych_oblasti_v_datech",
            "hodnota": 3,
            "reference": 10,
            "vaha": 0.25,
            "nasyceni": 0.3
          },
          {
            "metrika": "vyhledávání bez ošetření chyb",
            "klic": "pocet_vyhledani_bez_osetreni",
            "hodnota": 2,
            "reference": 40,
            "vaha": 0.25,
            "nasyceni": 0.05
          },
          {
            "metrika": "extrémně dlouhé vzorce",
            "klic": "pocet_dlouhych_vzorcu",
            "hodnota": 1,
            "reference": 5,
            "vaha": 0.15,
            "nasyceni": 0.2
          }
        ]
      },
      {
        "klic": "ochrana",
        "nazev": "Zámky",
        "strop_bodu": 4,
        "body": 2.4,
        "dilci_metriky": [
          {
            "metrika": "zamčené listy",
            "klic": "pocet_zamcenych_listu",
            "hodnota": 3,
            "reference": 5,
            "vaha": 1.0,
            "nasyceni": 0.6
          }
        ]
      }
    ]
  },
  "listy": [
    {
      "nazev": "Prehled",
      "viditelnost": "visible",
      "viditelnost_cesky": "viditelný",
      "pocet_bunek_s_obsahem": 25,
      "pocet_vzorcu": 13,
      "pouzita_oblast": "A1:D13",
      "pouzita_oblast_dle_souboru": "A1:D13",
      "zamek": null,
      "pocet_sloucenych_oblasti": 0,
      "pocet_pravidel_formatovani": 27,
      "pocet_overeni_dat": 0,
      "code_name": "List1",
      "autofiltr": false
    },
    {
      "nazev": "Kalkulace",
      "viditelnost": "visible",
      "viditelnost_cesky": "viditelný",
      "pocet_bunek_s_obsahem": 55,
      "pocet_vzorcu": 44,
      "pouzita_oblast": "A1:H15",
      "pouzita_oblast_dle_souboru": "A1:H15",
      "zamek": {
        "zamceno": true,
        "heslem": true,
        "algoritmus": null,
        "objekty": false,
        "scenare": false
      },
      "pocet_sloucenych_oblasti": 2,
      "pocet_pravidel_formatovani": 63,
      "pocet_overeni_dat": 0,
      "code_name": "List2",
      "autofiltr": false
    },
    {
      "nazev": "Kalkulace_stara",
      "viditelnost": "hidden",
      "viditelnost_cesky": "skrytý",
      "pocet_bunek_s_obsahem": 35,
      "pocet_vzorcu": 22,
      "pouzita_oblast": "A1:F13",
      "pouzita_oblast_dle_souboru": "A1:F13",
      "zamek": null,
      "pocet_sloucenych_oblasti": 0,
      "pocet_pravidel_formatovani": 0,
      "pocet_overeni_dat": 0,
      "code_name": "List3",
      "autofiltr": false
    },
    {
      "nazev": "Kalkulace (2)",
      "viditelnost": "visible",
      "viditelnost_cesky": "viditelný",
      "pocet_bunek_s_obsahem": 25,
      "pocet_vzorcu": 20,
      "pouzita_oblast": "A1:D8",
      "pouzita_oblast_dle_souboru": "A1:D8",
      "zamek": null,
      "pocet_sloucenych_oblasti": 0,
      "pocet_pravidel_formatovani": 0,
      "pocet_overeni_dat": 0,
      "code_name": "List4",
      "autofiltr": false
    },
    {
      "nazev": "NEPOUZIVAT",
      "viditelnost": "visible",
      "viditelnost_cesky": "viditelný",
      "pocet_bunek_s_obsahem": 19,
      "pocet_vzorcu": 13,
      "pouzita_oblast": "A1:D9",
      "pouzita_oblast_dle_souboru": "A1:D9",
      "zamek": null,
      "pocet_sloucenych_oblasti": 0,
      "pocet_pravidel_formatovani": 0,
      "pocet_overeni_dat": 0,
      "code_name": "List5",
      "autofiltr": false
    },
    {
      "nazev": "zaloha_2018",
      "viditelnost": "veryHidden",
      "viditelnost_cesky": "velmi skrytý",
      "pocet_bunek_s_obsahem": 19,
      "pocet_vzorcu": 10,
      "pouzita_oblast": "A1:C8",
      "pouzita_oblast_dle_souboru": "A1:C8",
      "zamek": null,
      "pocet_sloucenych_oblasti": 0,
      "pocet_pravidel_formatovani": 0,
      "pocet_overeni_dat": 0,
      "code_name": "List6",
      "autofiltr": false
    },
    {
      "nazev": "List1",
      "viditelnost": "visible",
      "viditelnost_cesky": "viditelný",
      "pocet_bunek_s_obsahem": 11,
      "pocet_vzorcu": 10,
      "pouzita_oblast": "A1:B8",
      "pouzita_oblast_dle_souboru": "A1:B8",
      "zamek": null,
      "pocet_sloucenych_oblasti": 0,
      "pocet_pravidel_formatovani": 0,
      "pocet_overeni_dat": 0,
      "code_name": "List7",
      "autofiltr": false
    },
    {
      "nazev": "Pokus",
      "viditelnost": "hidden",
      "viditelnost_cesky": "skrytý",
      "pocet_bunek_s_obsahem": 7,
      "pocet_vzorcu": 6,
      "pouzita_oblast": "A1:B8",
      "pouzita_oblast_dle_souboru": "A1:B8",
      "zamek": null,
      "pocet_sloucenych_oblasti": 0,
      "pocet_pravidel_formatovani": 0,
      "pocet_overeni_dat": 0,
      "code_name": "List8",
      "autofiltr": false
    },
    {
      "nazev": "Milan",
      "viditelnost": "visible",
      "viditelnost_cesky": "viditelný",
      "pocet_bunek_s_obsahem": 19,
      "pocet_vzorcu": 15,
      "pouzita_oblast": "A1:C8",
      "pouzita_oblast_dle_souboru": "A1:C8",
      "zamek": null,
      "pocet_sloucenych_oblasti": 0,
      "pocet_pravidel_formatovani": 0,
      "pocet_overeni_dat": 0,
      "code_name": "List9",
      "autofiltr": false
    },
    {
      "nazev": "cenik_final",
      "viditelnost": "visible",
      "viditelnost_cesky": "viditelný",
      "pocet_bunek_s_obsahem": 43,
      "pocet_vzorcu": 36,
      "pouzita_oblast": "A1:F9",
      "pouzita_oblast_dle_souboru": "A1:F9",
      "zamek": {
        "zamceno": true,
        "heslem": true,
        "algoritmus": null,
        "objekty": false,
        "scenare": false
      },
      "pocet_sloucenych_oblasti": 0,
      "pocet_pravidel_formatovani": 42,
      "pocet_overeni_dat": 0,
      "code_name": "List10",
      "autofiltr": false
    },
    {
      "nazev": "cenik_final_2",
      "viditelnost": "visible",
      "viditelnost_cesky": "viditelný",
      "pocet_bunek_s_obsahem": 29,
      "pocet_vzorcu": 24,
      "pouzita_oblast": "A1:D9",
      "pouzita_oblast_dle_souboru": "A1:D9",
      "zamek": null,
      "pocet_sloucenych_oblasti": 0,
      "pocet_pravidel_formatovani": 21,
      "pocet_overeni_dat": 0,
      "code_name": "List11",
      "autofiltr": false
    },
    {
      "nazev": "Vstupy",
      "viditelnost": "visible",
      "viditelnost_cesky": "viditelný",
      "pocet_bunek_s_obsahem": 164,
      "pocet_vzorcu": 2,
      "pouzita_oblast": "A1:G33",
      "pouzita_oblast_dle_souboru": "A1:G33",
      "zamek": null,
      "pocet_sloucenych_oblasti": 0,
      "pocet_pravidel_formatovani": 116,
      "pocet_overeni_dat": 0,
      "code_name": "List12",
      "autofiltr": false
    },
    {
      "nazev": "Kurzy",
      "viditelnost": "visible",
      "viditelnost_cesky": "viditelný",
      "pocet_bunek_s_obsahem": 24,
      "pocet_vzorcu": 7,
      "pouzita_oblast": "A1:D8",
      "pouzita_oblast_dle_souboru": "A1:D8",
      "zamek": null,
      "pocet_sloucenych_oblasti": 0,
      "pocet_pravidel_formatovani": 0,
      "pocet_overeni_dat": 0,
      "code_name": "List13",
      "autofiltr": false
    },
    {
      "nazev": "Sazby",
      "viditelnost": "hidden",
      "viditelnost_cesky": "skrytý",
      "pocet_bunek_s_obsahem": 18,
      "pocet_vzorcu": 0,
      "pouzita_oblast": "A1:C10",
      "pouzita_oblast_dle_souboru": "A1:C10",
      "zamek": {
        "zamceno": true,
        "heslem": true,
        "algoritmus": null,
        "objekty": false,
        "scenare": false
      },
      "pocet_sloucenych_oblasti": 0,
      "pocet_pravidel_formatovani": 0,
      "pocet_overeni_dat": 0,
      "code_name": "List14",
      "autofiltr": false
    },
    {
      "nazev": "Material",
      "viditelnost": "visible",
      "viditelnost_cesky": "viditelný",
      "pocet_bunek_s_obsahem": 78,
      "pocet_vzorcu": 64,
      "pouzita_oblast": "A1:H16",
      "pouzita_oblast_dle_souboru": "A1:H16",
      "zamek": null,
      "pocet_sloucenych_oblasti": 0,
      "pocet_pravidel_formatovani": 28,
      "pocet_overeni_dat": 0,
      "code_name": "List15",
      "autofiltr": false
    },
    {
      "nazev": "Mzdy",
      "viditelnost": "veryHidden",
      "viditelnost_cesky": "velmi skrytý",
      "pocet_bunek_s_obsahem": 29,
      "pocet_vzorcu": 18,
      "pouzita_oblast": "A1:D9",
      "pouzita_oblast_dle_souboru": "A1:D9",
      "zamek": null,
      "pocet_sloucenych_oblasti": 0,
      "pocet_pravidel_formatovani": 0,
      "pocet_overeni_dat": 0,
      "code_name": "List16",
      "autofiltr": false
    },
    {
      "nazev": "Rezie",
      "viditelnost": "visible",
      "viditelnost_cesky": "viditelný",
      "pocet_bunek_s_obsahem": 29,
      "pocet_vzorcu": 24,
      "pouzita_oblast": "A1:D9",
      "pouzita_oblast_dle_souboru": "A1:D9",
      "zamek": null,
      "pocet_sloucenych_oblasti": 0,
      "pocet_pravidel_formatovani": 0,
      "pocet_overeni_dat": 0,
      "code_name": "List17",
      "autofiltr": false
    },
    {
      "nazev": "Marze",
      "viditelnost": "visible",
      "viditelnost_cesky": "viditelný",
      "pocet_bunek_s_obsahem": 29,
      "pocet_vzorcu": 21,
      "pouzita_oblast": "A1:D9",
      "pouzita_oblast_dle_souboru": "A1:D9",
      "zamek": null,
      "pocet_sloucenych_oblasti": 0,
      "pocet_pravidel_formatovani": 21,
      "pocet_overeni_dat": 0,
      "code_name": "List18",
      "autofiltr": false
    },
    {
      "nazev": "Vyroba_A",
      "viditelnost": "visible",
      "viditelnost_cesky": "viditelný",
      "pocet_bunek_s_obsahem": 36,
      "pocet_vzorcu": 30,
      "pouzita_oblast": "A1:E9",
      "pouzita_oblast_dle_souboru": "A1:E9",
      "zamek": null,
      "pocet_sloucenych_oblasti": 0,
      "pocet_pravidel_formatovani": 0,
      "pocet_overeni_dat": 0,
      "code_name": "List19",
      "autofiltr": false
    },
    {
      "nazev": "Vyroba_B",
      "viditelnost": "visible",
      "viditelnost_cesky": "viditelný",
      "pocet_bunek_s_obsahem": 36,
      "pocet_vzorcu": 30,
      "pouzita_oblast": "A1:E9",
      "pouzita_oblast_dle_souboru": "A1:E9",
      "zamek": null,
      "pocet_sloucenych_oblasti": 0,
      "pocet_pravidel_formatovani": 0,
      "pocet_overeni_dat": 0,
      "code_name": "List20",
      "autofiltr": false
    },
    {
      "nazev": "Vyroba_C",
      "viditelnost": "visible",
      "viditelnost_cesky": "viditelný",
      "pocet_bunek_s_obsahem": 36,
      "pocet_vzorcu": 30,
      "pouzita_oblast": "A1:E9",
      "pouzita_oblast_dle_souboru": "A1:E9",
      "zamek": null,
      "pocet_sloucenych_oblasti": 0,
      "pocet_pravidel_formatovani": 0,
      "pocet_overeni_dat": 0,
      "code_name": "List21",
      "autofiltr": false
    },
    {
      "nazev": "Sestava",
      "viditelnost": "visible",
      "viditelnost_cesky": "viditelný",
      "pocet_bunek_s_obsahem": 46,
      "pocet_vzorcu": 37,
      "pouzita_oblast": "A1:H10",
      "pouzita_oblast_dle_souboru": "A1:H12",
      "zamek": null,
      "pocet_sloucenych_oblasti": 1,
      "pocet_pravidel_formatovani": 21,
      "pocet_overeni_dat": 0,
      "code_name": "List22",
      "autofiltr": false
    },
    {
      "nazev": "Souhrn",
      "viditelnost": "visible",
      "viditelnost_cesky": "viditelný",
      "pocet_bunek_s_obsahem": 30,
      "pocet_vzorcu": 14,
      "pouzita_oblast": "A1:C15",
      "pouzita_oblast_dle_souboru": "A1:C15",
      "zamek": null,
      "pocet_sloucenych_oblasti": 0,
      "pocet_pravidel_formatovani": 31,
      "pocet_overeni_dat": 0,
      "code_name": "List23",
      "autofiltr": false
    },
    {
      "nazev": "Export",
      "viditelnost": "hidden",
      "viditelnost_cesky": "skrytý",
      "pocet_bunek_s_obsahem": 19,
      "pocet_vzorcu": 15,
      "pouzita_oblast": "A1:C8",
      "pouzita_oblast_dle_souboru": "A1:C8",
      "zamek": null,
      "pocet_sloucenych_oblasti": 0,
      "pocet_pravidel_formatovani": 0,
      "pocet_overeni_dat": 0,
      "code_name": "List24",
      "autofiltr": false
    },
    {
      "nazev": "Data_import",
      "viditelnost": "veryHidden",
      "viditelnost_cesky": "velmi skrytý",
      "pocet_bunek_s_obsahem": 11,
      "pocet_vzorcu": 8,
      "pouzita_oblast": "A1:B7",
      "pouzita_oblast_dle_souboru": "A1:B7",
      "zamek": null,
      "pocet_sloucenych_oblasti": 0,
      "pocet_pravidel_formatovani": 0,
      "pocet_overeni_dat": 0,
      "code_name": "List25",
      "autofiltr": false
    },
    {
      "nazev": "pomocne",
      "viditelnost": "hidden",
      "viditelnost_cesky": "skrytý",
      "pocet_bunek_s_obsahem": 13,
      "pocet_vzorcu": 11,
      "pouzita_oblast": "A1:B8",
      "pouzita_oblast_dle_souboru": "A1:B8",
      "zamek": null,
      "pocet_sloucenych_oblasti": 0,
      "pocet_pravidel_formatovani": 0,
      "pocet_overeni_dat": 0,
      "code_name": "List26",
      "autofiltr": false
    },
    {
      "nazev": "temp",
      "viditelnost": "visible",
      "viditelnost_cesky": "viditelný",
      "pocet_bunek_s_obsahem": 6,
      "pocet_vzorcu": 5,
      "pouzita_oblast": "A1:A8",
      "pouzita_oblast_dle_souboru": "A1:A8",
      "zamek": null,
      "pocet_sloucenych_oblasti": 0,
      "pocet_pravidel_formatovani": 0,
      "pocet_overeni_dat": 0,
      "code_name": "List27",
      "autofiltr": false
    },
    {
      "nazev": "List1 (2)",
      "viditelnost": "visible",
      "viditelnost_cesky": "viditelný",
      "pocet_bunek_s_obsahem": 9,
      "pocet_vzorcu": 8,
      "pouzita_oblast": "A1:B7",
      "pouzita_oblast_dle_souboru": "A1:B7",
      "zamek": null,
      "pocet_sloucenych_oblasti": 0,
      "pocet_pravidel_formatovani": 0,
      "pocet_overeni_dat": 0,
      "code_name": "List28",
      "autofiltr": false
    },
    {
      "nazev": "Kontrola",
      "viditelnost": "visible",
      "viditelnost_cesky": "viditelný",
      "pocet_bunek_s_obsahem": 28,
      "pocet_vzorcu": 12,
      "pouzita_oblast": "A1:E22",
      "pouzita_oblast_dle_souboru": "A1:E22",
      "zamek": null,
      "pocet_sloucenych_oblasti": 0,
      "pocet_pravidel_formatovani": 26,
      "pocet_overeni_dat": 0,
      "code_name": "List29",
      "autofiltr": false
    },
    {
      "nazev": "Archiv_2017",
      "viditelnost": "veryHidden",
      "viditelnost_cesky": "velmi skrytý",
      "pocet_bunek_s_obsahem": 11,
      "pocet_vzorcu": 8,
      "pouzita_oblast": "A1:B7",
      "pouzita_oblast_dle_souboru": "A1:B7",
      "zamek": null,
      "pocet_sloucenych_oblasti": 0,
      "pocet_pravidel_formatovani": 0,
      "pocet_overeni_dat": 0,
      "code_name": "List30",
      "autofiltr": false
    },
    {
      "nazev": "Poznamky",
      "viditelnost": "visible",
      "viditelnost_cesky": "viditelný",
      "pocet_bunek_s_obsahem": 12,
      "pocet_vzorcu": 3,
      "pouzita_oblast": "A1:C10",
      "pouzita_oblast_dle_souboru": "A1:C10",
      "zamek": null,
      "pocet_sloucenych_oblasti": 0,
      "pocet_pravidel_formatovani": 0,
      "pocet_overeni_dat": 0,
      "code_name": "List31",
      "autofiltr": false
    },
    {
      "nazev": "Ceník_2019",
      "viditelnost": "visible",
      "viditelnost_cesky": "viditelný",
      "pocet_bunek_s_obsahem": 22,
      "pocet_vzorcu": 18,
      "pouzita_oblast": "A1:C9",
      "pouzita_oblast_dle_souboru": "A1:C9",
      "zamek": null,
      "pocet_sloucenych_oblasti": 0,
      "pocet_pravidel_formatovani": 0,
      "pocet_overeni_dat": 0,
      "code_name": "List32",
      "autofiltr": false
    },
    {
      "nazev": "Sheet1",
      "viditelnost": "hidden",
      "viditelnost_cesky": "skrytý",
      "pocet_bunek_s_obsahem": 5,
      "pocet_vzorcu": 4,
      "pouzita_oblast": "A1:A7",
      "pouzita_oblast_dle_souboru": "A1:A7",
      "zamek": null,
      "pocet_sloucenych_oblasti": 0,
      "pocet_pravidel_formatovani": 0,
      "pocet_overeni_dat": 0,
      "code_name": "List33",
      "autofiltr": false
    },
    {
      "nazev": "zaloha_2018 (2)",
      "viditelnost": "veryHidden",
      "viditelnost_cesky": "velmi skrytý",
      "pocet_bunek_s_obsahem": 13,
      "pocet_vzorcu": 10,
      "pouzita_oblast": "A1:B8",
      "pouzita_oblast_dle_souboru": "A1:B8",
      "zamek": null,
      "pocet_sloucenych_oblasti": 0,
      "pocet_pravidel_formatovani": 0,
      "pocet_overeni_dat": 0,
      "code_name": "List34",
      "autofiltr": false
    }
  ],
  "zavislosti": {
    "smysl_hrany": "hrana zdroj -> cíl znamená, že list 'zdroj' čte ve svých vzorcích z listu 'cíl'",
    "hrany": [
      {
        "zdroj": "Material",
        "cil": "Vstupy",
        "pocet_odkazu": 55,
        "priklady": [
          "Material!A4",
          "Material!B4",
          "Material!C4",
          "Material!D4",
          "Material!F4"
        ]
      },
      {
        "zdroj": "Kalkulace",
        "cil": "Marze",
        "pocet_odkazu": 24,
        "priklady": [
          "Kalkulace!D4",
          "Kalkulace!E4",
          "Kalkulace!F4",
          "Kalkulace!G4",
          "Kalkulace!D5"
        ]
      },
      {
        "zdroj": "Kalkulace (2)",
        "cil": "Kalkulace",
        "pocet_odkazu": 20,
        "priklady": [
          "'Kalkulace (2)'!A4",
          "'Kalkulace (2)'!B4",
          "'Kalkulace (2)'!C4",
          "'Kalkulace (2)'!D4",
          "'Kalkulace (2)'!A5"
        ]
      },
      {
        "zdroj": "Ceník_2019",
        "cil": "cenik_final_2",
        "pocet_odkazu": 18,
        "priklady": [
          "Ceník_2019!A4",
          "Ceník_2019!B4",
          "Ceník_2019!C4",
          "Ceník_2019!A5",
          "Ceník_2019!B5"
        ]
      },
      {
        "zdroj": "Marze",
        "cil": "Sestava",
        "pocet_odkazu": 18,
        "priklady": [
          "Marze!A4",
          "Marze!B4",
          "Marze!D4",
          "Marze!A5",
          "Marze!B5"
        ]
      },
      {
        "zdroj": "Rezie",
        "cil": "Material",
        "pocet_odkazu": 18,
        "priklady": [
          "Rezie!A4",
          "Rezie!B4",
          "Rezie!D4",
          "Rezie!A5",
          "Rezie!B5"
        ]
      },
      {
        "zdroj": "Sestava",
        "cil": "Vyroba_A",
        "pocet_odkazu": 18,
        "priklady": [
          "Sestava!A4",
          "Sestava!B4",
          "Sestava!F4",
          "Sestava!A5",
          "Sestava!B5"
        ]
      },
      {
        "zdroj": "cenik_final",
        "cil": "Kalkulace",
        "pocet_odkazu": 18,
        "priklady": [
          "cenik_final!A4",
          "cenik_final!B4",
          "cenik_final!C4",
          "cenik_final!A5",
          "cenik_final!B5"
        ]
      },
      {
        "zdroj": "Kalkulace_stara",
        "cil": "Vstupy",
        "pocet_odkazu": 17,
        "priklady": [
          "Kalkulace_stara!A4",
          "Kalkulace_stara!B4",
          "Kalkulace_stara!C4",
          "Kalkulace_stara!F4",
          "Kalkulace_stara!A5"
        ]
      },
      {
        "zdroj": "Material",
        "cil": "Kurzy",
        "pocet_odkazu": 14,
        "priklady": [
          "Material!E5",
          "Material!F5",
          "Material!E6",
          "Material!F6",
          "Material!E8"
        ]
      },
      {
        "zdroj": "Kalkulace",
        "cil": "Sestava",
        "pocet_odkazu": 12,
        "priklady": [
          "Kalkulace!A4",
          "Kalkulace!C4",
          "Kalkulace!H4",
          "Kalkulace!A5",
          "Kalkulace!C5"
        ]
      },
      {
        "zdroj": "Mzdy",
        "cil": "Vstupy",
        "pocet_odkazu": 12,
        "priklady": [
          "Mzdy!A4",
          "Mzdy!D4",
          "Mzdy!A5",
          "Mzdy!D5",
          "Mzdy!A6"
        ]
      },
      {
        "zdroj": "NEPOUZIVAT",
        "cil": "Kalkulace_stara",
        "pocet_odkazu": 12,
        "priklady": [
          "NEPOUZIVAT!A4",
          "NEPOUZIVAT!B4",
          "NEPOUZIVAT!A5",
          "NEPOUZIVAT!B5",
          "NEPOUZIVAT!A6"
        ]
      },
      {
        "zdroj": "Rezie",
        "cil": "Mzdy",
        "pocet_odkazu": 12,
        "priklady": [
          "Rezie!C4",
          "Rezie!D4",
          "Rezie!C5",
          "Rezie!D5",
          "Rezie!C6"
        ]
      },
      {
        "zdroj": "Vyroba_A",
        "cil": "Material",
        "pocet_odkazu": 12,
        "priklady": [
          "Vyroba_A!A4",
          "Vyroba_A!B4",
          "Vyroba_A!A5",
          "Vyroba_A!B5",
          "Vyroba_A!A6"
        ]
      },
      {
        "zdroj": "Vyroba_B",
        "cil": "Material",
        "pocet_odkazu": 12,
        "priklady": [
          "Vyroba_B!A4",
          "Vyroba_B!B4",
          "Vyroba_B!A5",
          "Vyroba_B!B5",
          "Vyroba_B!A6"
        ]
      },
      {
        "zdroj": "Vyroba_C",
        "cil": "Material",
        "pocet_odkazu": 12,
        "priklady": [
          "Vyroba_C!A4",
          "Vyroba_C!B4",
          "Vyroba_C!A5",
          "Vyroba_C!B5",
          "Vyroba_C!A6"
        ]
      },
      {
        "zdroj": "cenik_final_2",
        "cil": "cenik_final",
        "pocet_odkazu": 12,
        "priklady": [
          "cenik_final_2!A4",
          "cenik_final_2!B4",
          "cenik_final_2!A5",
          "cenik_final_2!B5",
          "cenik_final_2!A6"
        ]
      },
      {
        "zdroj": "List1",
        "cil": "Vstupy",
        "pocet_odkazu": 10,
        "priklady": [
          "List1!A4",
          "List1!B4",
          "List1!A5",
          "List1!B5",
          "List1!A6"
        ]
      },
      {
        "zdroj": "Milan",
        "cil": "Kalkulace",
        "pocet_odkazu": 10,
        "priklady": [
          "Milan!A4",
          "Milan!B4",
          "Milan!A5",
          "Milan!B5",
          "Milan!A6"
        ]
      },
      {
        "zdroj": "pomocne",
        "cil": "Material",
        "pocet_odkazu": 10,
        "priklady": [
          "pomocne!A4",
          "pomocne!B4",
          "pomocne!A5",
          "pomocne!B5",
          "pomocne!A6"
        ]
      },
      {
        "zdroj": "zaloha_2018",
        "cil": "Kalkulace_stara",
        "pocet_odkazu": 10,
        "priklady": [
          "zaloha_2018!A4",
          "zaloha_2018!B4",
          "zaloha_2018!A5",
          "zaloha_2018!B5",
          "zaloha_2018!A6"
        ]
      },
      {
        "zdroj": "zaloha_2018 (2)",
        "cil": "zaloha_2018",
        "pocet_odkazu": 10,
        "priklady": [
          "'zaloha_2018 (2)'!A4",
          "'zaloha_2018 (2)'!B4",
          "'zaloha_2018 (2)'!A5",
          "'zaloha_2018 (2)'!B5",
          "'zaloha_2018 (2)'!A6"
        ]
      },
      {
        "zdroj": "Archiv_2017",
        "cil": "zaloha_2018",
        "pocet_odkazu": 8,
        "priklady": [
          "Archiv_2017!A4",
          "Archiv_2017!B4",
          "Archiv_2017!A5",
          "Archiv_2017!B5",
          "Archiv_2017!A6"
        ]
      },
      {
        "zdroj": "Data_import",
        "cil": "Vstupy",
        "pocet_odkazu": 8,
        "priklady": [
          "Data_import!A4",
          "Data_import!B4",
          "Data_import!A5",
          "Data_import!B5",
          "Data_import!A6"
        ]
      },
      {
        "zdroj": "List1 (2)",
        "cil": "List1",
        "pocet_odkazu": 8,
        "priklady": [
          "'List1 (2)'!A4",
          "'List1 (2)'!B4",
          "'List1 (2)'!A5",
          "'List1 (2)'!B5",
          "'List1 (2)'!A6"
        ]
      },
      {
        "zdroj": "Kalkulace",
        "cil": "Souhrn",
        "pocet_odkazu": 7,
        "priklady": [
          "Kalkulace!E4",
          "Kalkulace!E5",
          "Kalkulace!H5",
          "Kalkulace!E6",
          "Kalkulace!E7"
        ]
      },
      {
        "zdroj": "Marze",
        "cil": "Sazby",
        "pocet_odkazu": 6,
        "priklady": [
          "Marze!C4",
          "Marze!D4",
          "Marze!C6",
          "Marze!D6",
          "Marze!C8"
        ]
      },
      {
        "zdroj": "Mzdy",
        "cil": "Sazby",
        "pocet_odkazu": 6,
        "priklady": [
          "Mzdy!C4",
          "Mzdy!C5",
          "Mzdy!C6",
          "Mzdy!C7",
          "Mzdy!C8"
        ]
      },
      {
        "zdroj": "Sestava",
        "cil": "Vyroba_B",
        "pocet_odkazu": 6,
        "priklady": [
          "Sestava!C4",
          "Sestava!C5",
          "Sestava!C6",
          "Sestava!C7",
          "Sestava!C8"
        ]
      },
      {
        "zdroj": "Sestava",
        "cil": "Vyroba_C",
        "pocet_odkazu": 6,
        "priklady": [
          "Sestava!D4",
          "Sestava!D5",
          "Sestava!D6",
          "Sestava!D7",
          "Sestava!D8"
        ]
      },
      {
        "zdroj": "Vyroba_A",
        "cil": "Mzdy",
        "pocet_odkazu": 6,
        "priklady": [
          "Vyroba_A!C4",
          "Vyroba_A!C5",
          "Vyroba_A!C6",
          "Vyroba_A!C7",
          "Vyroba_A!C8"
        ]
      },
      {
        "zdroj": "Vyroba_A",
        "cil": "Rezie",
        "pocet_odkazu": 6,
        "priklady": [
          "Vyroba_A!D4",
          "Vyroba_A!D5",
          "Vyroba_A!D6",
          "Vyroba_A!D7",
          "Vyroba_A!D8"
        ]
      },
      {
        "zdroj": "Vyroba_B",
        "cil": "Mzdy",
        "pocet_odkazu": 6,
        "priklady": [
          "Vyroba_B!C4",
          "Vyroba_B!C5",
          "Vyroba_B!C6",
          "Vyroba_B!C7",
          "Vyroba_B!C8"
        ]
      },
      {
        "zdroj": "Vyroba_B",
        "cil": "Rezie",
        "pocet_odkazu": 6,
        "priklady": [
          "Vyroba_B!D4",
          "Vyroba_B!D5",
          "Vyroba_B!D6",
          "Vyroba_B!D7",
          "Vyroba_B!D8"
        ]
      },
      {
        "zdroj": "Vyroba_C",
        "cil": "Mzdy",
        "pocet_odkazu": 6,
        "priklady": [
          "Vyroba_C!C4",
          "Vyroba_C!C5",
          "Vyroba_C!C6",
          "Vyroba_C!C7",
          "Vyroba_C!C8"
        ]
      },
      {
        "zdroj": "Vyroba_C",
        "cil": "Rezie",
        "pocet_odkazu": 6,
        "priklady": [
          "Vyroba_C!D4",
          "Vyroba_C!D5",
          "Vyroba_C!D6",
          "Vyroba_C!D7",
          "Vyroba_C!D8"
        ]
      },
      {
        "zdroj": "cenik_final_2",
        "cil": "Kalkulace",
        "pocet_odkazu": 6,
        "priklady": [
          "cenik_final_2!D4",
          "cenik_final_2!D5",
          "cenik_final_2!D6",
          "cenik_final_2!D7",
          "cenik_final_2!D8"
        ]
      },
      {
        "zdroj": "Export",
        "cil": "Prehled",
        "pocet_odkazu": 5,
        "priklady": [
          "Export!C4",
          "Export!C5",
          "Export!C6",
          "Export!C7",
          "Export!C8"
        ]
      },
      {
        "zdroj": "Export",
        "cil": "cenik_final",
        "pocet_odkazu": 5,
        "priklady": [
          "Export!A4",
          "Export!A5",
          "Export!A6",
          "Export!A7",
          "Export!A8"
        ]
      },
      {
        "zdroj": "Kalkulace",
        "cil": "Vstupy",
        "pocet_odkazu": 5,
        "priklady": [
          "Kalkulace!B4",
          "Kalkulace!B5",
          "Kalkulace!B6",
          "Kalkulace!B8",
          "Kalkulace!B9"
        ]
      },
      {
        "zdroj": "Milan",
        "cil": "Vstupy",
        "pocet_odkazu": 5,
        "priklady": [
          "Milan!C4",
          "Milan!C5",
          "Milan!C6",
          "Milan!C7",
          "Milan!C8"
        ]
      },
      {
        "zdroj": "Pokus",
        "cil": "Vyroba_A",
        "pocet_odkazu": 5,
        "priklady": [
          "Pokus!A4",
          "Pokus!A5",
          "Pokus!A6",
          "Pokus!A7",
          "Pokus!A8"
        ]
      },
      {
        "zdroj": "temp",
        "cil": "Material",
        "pocet_odkazu": 5,
        "priklady": [
          "temp!A4",
          "temp!A5",
          "temp!A6",
          "temp!A7",
          "temp!A8"
        ]
      },
      {
        "zdroj": "Kontrola",
        "cil": "Souhrn",
        "pocet_odkazu": 4,
        "priklady": [
          "Kontrola!B7",
          "Kontrola!B9",
          "Kontrola!B11",
          "Kontrola!C20"
        ]
      },
      {
        "zdroj": "Prehled",
        "cil": "Souhrn",
        "pocet_odkazu": 4,
        "priklady": [
          "Prehled!B4",
          "Prehled!B5",
          "Prehled!D5",
          "Prehled!B11"
        ]
      },
      {
        "zdroj": "Sheet1",
        "cil": "Export",
        "pocet_odkazu": 4,
        "priklady": [
          "Sheet1!A4",
          "Sheet1!A5",
          "Sheet1!A6",
          "Sheet1!A7"
        ]
      },
      {
        "zdroj": "Kontrola",
        "cil": "Vstupy",
        "pocet_odkazu": 3,
        "priklady": [
          "Kontrola!B6",
          "Kontrola!B10",
          "Kontrola!B12"
        ]
      },
      {
        "zdroj": "Kalkulace",
        "cil": "Sazby",
        "pocet_odkazu": 2,
        "priklady": [
          "Kalkulace!H4",
          "Kalkulace!H5"
        ]
      },
      {
        "zdroj": "Poznamky",
        "cil": "Kontrola",
        "pocet_odkazu": 2,
        "priklady": [
          "Poznamky!C4",
          "Poznamky!C5"
        ]
      },
      {
        "zdroj": "Souhrn",
        "cil": "Kurzy",
        "pocet_odkazu": 2,
        "priklady": [
          "Souhrn!B10",
          "Souhrn!B11"
        ]
      },
      {
        "zdroj": "Souhrn",
        "cil": "Sestava",
        "pocet_odkazu": 2,
        "priklady": [
          "Souhrn!B4",
          "Souhrn!B14"
        ]
      },
      {
        "zdroj": "Souhrn",
        "cil": "Vstupy",
        "pocet_odkazu": 2,
        "priklady": [
          "Souhrn!B12",
          "Souhrn!B13"
        ]
      },
      {
        "zdroj": "Kalkulace",
        "cil": "Kalkulace_stara",
        "pocet_odkazu": 1,
        "priklady": [
          "Kalkulace!H5"
        ]
      },
      {
        "zdroj": "Kalkulace_stara",
        "cil": "Sazby",
        "pocet_odkazu": 1,
        "priklady": [
          "Kalkulace_stara!F5"
        ]
      },
      {
        "zdroj": "Kontrola",
        "cil": "Kalkulace",
        "pocet_odkazu": 1,
        "priklady": [
          "Kontrola!B4"
        ]
      },
      {
        "zdroj": "Kontrola",
        "cil": "Kurzy",
        "pocet_odkazu": 1,
        "priklady": [
          "Kontrola!B8"
        ]
      },
      {
        "zdroj": "Kontrola",
        "cil": "Material",
        "pocet_odkazu": 1,
        "priklady": [
          "Kontrola!B9"
        ]
      },
      {
        "zdroj": "Kontrola",
        "cil": "Sazby",
        "pocet_odkazu": 1,
        "priklady": [
          "Kontrola!B11"
        ]
      },
      {
        "zdroj": "Kontrola",
        "cil": "Sestava",
        "pocet_odkazu": 1,
        "priklady": [
          "Kontrola!B5"
        ]
      },
      {
        "zdroj": "Kontrola",
        "cil": "Vyroba_A",
        "pocet_odkazu": 1,
        "priklady": [
          "Kontrola!B5"
        ]
      },
      {
        "zdroj": "Kontrola",
        "cil": "Vyroba_B",
        "pocet_odkazu": 1,
        "priklady": [
          "Kontrola!B5"
        ]
      },
      {
        "zdroj": "Kontrola",
        "cil": "Vyroba_C",
        "pocet_odkazu": 1,
        "priklady": [
          "Kontrola!B5"
        ]
      },
      {
        "zdroj": "Kontrola",
        "cil": "cenik_final",
        "pocet_odkazu": 1,
        "priklady": [
          "Kontrola!B4"
        ]
      },
      {
        "zdroj": "Kontrola",
        "cil": "pomocne",
        "pocet_odkazu": 1,
        "priklady": [
          "Kontrola!C22"
        ]
      },
      {
        "zdroj": "NEPOUZIVAT",
        "cil": "Vstupy",
        "pocet_odkazu": 1,
        "priklady": [
          "NEPOUZIVAT!D4"
        ]
      },
      {
        "zdroj": "Prehled",
        "cil": "Kalkulace",
        "pocet_odkazu": 1,
        "priklady": [
          "Prehled!B6"
        ]
      },
      {
        "zdroj": "Prehled",
        "cil": "Kontrola",
        "pocet_odkazu": 1,
        "priklady": [
          "Prehled!B13"
        ]
      },
      {
        "zdroj": "Prehled",
        "cil": "Kurzy",
        "pocet_odkazu": 1,
        "priklady": [
          "Prehled!B10"
        ]
      },
      {
        "zdroj": "Prehled",
        "cil": "cenik_final",
        "pocet_odkazu": 1,
        "priklady": [
          "Prehled!B7"
        ]
      },
      {
        "zdroj": "Prehled",
        "cil": "cenik_final_2",
        "pocet_odkazu": 1,
        "priklady": [
          "Prehled!B8"
        ]
      },
      {
        "zdroj": "Sestava",
        "cil": "Kurzy",
        "pocet_odkazu": 1,
        "priklady": [
          "Sestava!H4"
        ]
      },
      {
        "zdroj": "Souhrn",
        "cil": "Marze",
        "pocet_odkazu": 1,
        "priklady": [
          "Souhrn!B5"
        ]
      },
      {
        "zdroj": "Souhrn",
        "cil": "Material",
        "pocet_odkazu": 1,
        "priklady": [
          "Souhrn!B6"
        ]
      },
      {
        "zdroj": "Souhrn",
        "cil": "Mzdy",
        "pocet_odkazu": 1,
        "priklady": [
          "Souhrn!B7"
        ]
      },
      {
        "zdroj": "Souhrn",
        "cil": "Rezie",
        "pocet_odkazu": 1,
        "priklady": [
          "Souhrn!B8"
        ]
      },
      {
        "zdroj": "Souhrn",
        "cil": "Vyroba_A",
        "pocet_odkazu": 1,
        "priklady": [
          "Souhrn!B14"
        ]
      },
      {
        "zdroj": "Souhrn",
        "cil": "Vyroba_B",
        "pocet_odkazu": 1,
        "priklady": [
          "Souhrn!B14"
        ]
      },
      {
        "zdroj": "Souhrn",
        "cil": "Vyroba_C",
        "pocet_odkazu": 1,
        "priklady": [
          "Souhrn!B14"
        ]
      },
      {
        "zdroj": "pomocne",
        "cil": "Kontrola",
        "pocet_odkazu": 1,
        "priklady": [
          "pomocne!B2"
        ]
      }
    ],
    "matice": {
      "Prehled": {
        "Souhrn": 4,
        "Kalkulace": 1,
        "cenik_final": 1,
        "cenik_final_2": 1,
        "Kurzy": 1,
        "Kontrola": 1
      },
      "Kalkulace": {
        "Sestava": 12,
        "Vstupy": 5,
        "Marze": 24,
        "Souhrn": 7,
        "Sazby": 2,
        "Kalkulace_stara": 1
      },
      "Kalkulace_stara": {
        "Vstupy": 17,
        "Sazby": 1
      },
      "Kalkulace (2)": {
        "Kalkulace": 20
      },
      "NEPOUZIVAT": {
        "Kalkulace_stara": 12,
        "Vstupy": 1
      },
      "zaloha_2018": {
        "Kalkulace_stara": 10
      },
      "List1": {
        "Vstupy": 10
      },
      "Pokus": {
        "Vyroba_A": 5
      },
      "Milan": {
        "Kalkulace": 10,
        "Vstupy": 5
      },
      "cenik_final": {
        "Kalkulace": 18
      },
      "cenik_final_2": {
        "cenik_final": 12,
        "Kalkulace": 6
      },
      "Material": {
        "Vstupy": 55,
        "Kurzy": 14
      },
      "Mzdy": {
        "Vstupy": 12,
        "Sazby": 6
      },
      "Rezie": {
        "Material": 18,
        "Mzdy": 12
      },
      "Marze": {
        "Sestava": 18,
        "Sazby": 6
      },
      "Vyroba_A": {
        "Material": 12,
        "Mzdy": 6,
        "Rezie": 6
      },
      "Vyroba_B": {
        "Material": 12,
        "Mzdy": 6,
        "Rezie": 6
      },
      "Vyroba_C": {
        "Material": 12,
        "Mzdy": 6,
        "Rezie": 6
      },
      "Sestava": {
        "Vyroba_A": 18,
        "Vyroba_B": 6,
        "Vyroba_C": 6,
        "Kurzy": 1
      },
      "Souhrn": {
        "Sestava": 2,
        "Marze": 1,
        "Material": 1,
        "Mzdy": 1,
        "Rezie": 1,
        "Kurzy": 2,
        "Vstupy": 2,
        "Vyroba_C": 1,
        "Vyroba_B": 1,
        "Vyroba_A": 1
      },
      "Export": {
        "cenik_final": 5,
        "Prehled": 5
      },
      "Data_import": {
        "Vstupy": 8
      },
      "pomocne": {
        "Kontrola": 1,
        "Material": 10
      },
      "temp": {
        "Material": 5
      },
      "List1 (2)": {
        "List1": 8
      },
      "Kontrola": {
        "cenik_final": 1,
        "Kalkulace": 1,
        "Sestava": 1,
        "Vyroba_C": 1,
        "Vyroba_B": 1,
        "Vyroba_A": 1,
        "Vstupy": 3,
        "Souhrn": 4,
        "Kurzy": 1,
        "Material": 1,
        "Sazby": 1,
        "pomocne": 1
      },
      "Archiv_2017": {
        "zaloha_2018": 8
      },
      "Poznamky": {
        "Kontrola": 2
      },
      "Ceník_2019": {
        "cenik_final_2": 18
      },
      "Sheet1": {
        "Export": 4
      },
      "zaloha_2018 (2)": {
        "zaloha_2018": 10
      }
    },
    "poradi_vypoctu": [
      "Kurzy",
      "Sazby",
      "Vstupy",
      "Data_import",
      "Kalkulace_stara",
      "List1",
      "List1 (2)",
      "Material",
      "Mzdy",
      "NEPOUZIVAT",
      "Rezie",
      "Vyroba_A",
      "Pokus",
      "Vyroba_B",
      "Vyroba_C",
      "Sestava",
      "Marze",
      "Souhrn",
      "Kalkulace",
      "Kalkulace (2)",
      "Milan",
      "cenik_final",
      "cenik_final_2",
      "Ceník_2019",
      "temp",
      "zaloha_2018",
      "Archiv_2017",
      "zaloha_2018 (2)",
      "Export",
      "Kontrola",
      "Poznamky",
      "Prehled",
      "Sheet1",
      "pomocne"
    ],
    "cykly_mezi_listy": [
      [
        "Kontrola",
        "pomocne"
      ]
    ],
    "nejdelsi_retez": {
      "delka": 13,
      "listy": [
        "Sheet1",
        "Export",
        "Prehled",
        "Kontrola",
        "cenik_final",
        "Kalkulace",
        "Souhrn",
        "Marze",
        "Sestava",
        "Vyroba_A",
        "Rezie",
        "Material",
        "Kurzy"
      ]
    },
    "listy_bez_vazeb": []
  },
  "pojmenovane_oblasti": [
    {
      "nazev": "DPH",
      "odkaz": "Sazby!$B$4",
      "skryty": false,
      "vestaveny": false,
      "lokalni_list": null,
      "stav": "v pořádku",
      "duvod": null
    },
    {
      "nazev": "KURZ_EUR",
      "odkaz": "Kurzy!$B$4",
      "skryty": false,
      "vestaveny": false,
      "lokalni_list": null,
      "stav": "v pořádku",
      "duvod": null
    },
    {
      "nazev": "KURZ_EURO",
      "odkaz": "Kurzy!$B$5",
      "skryty": false,
      "vestaveny": false,
      "lokalni_list": null,
      "stav": "v pořádku",
      "duvod": null
    },
    {
      "nazev": "MARZE",
      "odkaz": "Sazby!$B$6",
      "skryty": false,
      "vestaveny": false,
      "lokalni_list": null,
      "stav": "v pořádku",
      "duvod": null
    },
    {
      "nazev": "DATA_VSTUP",
      "odkaz": "Vstupy!$A$4:$E$33",
      "skryty": false,
      "vestaveny": false,
      "lokalni_list": null,
      "stav": "v pořádku",
      "duvod": null
    },
    {
      "nazev": "CENIK",
      "odkaz": "cenik_final!$A$4:$F$9",
      "skryty": false,
      "vestaveny": false,
      "lokalni_list": null,
      "stav": "v pořádku",
      "duvod": null
    },
    {
      "nazev": "SESTAVA_NAKLAD",
      "odkaz": "Sestava!$E$4:$E$9",
      "skryty": false,
      "vestaveny": false,
      "lokalni_list": null,
      "stav": "v pořádku",
      "duvod": null
    },
    {
      "nazev": "KURZ_STARY",
      "odkaz": "'zaloha_2017'!$B$2",
      "skryty": false,
      "vestaveny": false,
      "lokalni_list": null,
      "stav": "rozbitá",
      "duvod": "míří na list, který v sešitu není: zaloha_2017"
    },
    {
      "nazev": "CENIK_2015",
      "odkaz": "'Kalkulace_2015'!$A$1:$F$50",
      "skryty": false,
      "vestaveny": false,
      "lokalni_list": null,
      "stav": "rozbitá",
      "duvod": "míří na list, který v sešitu není: Kalkulace_2015"
    },
    {
      "nazev": "SAZBA_DPH_2013",
      "odkaz": "'Sazby_2013'!$B$1",
      "skryty": false,
      "vestaveny": false,
      "lokalni_list": null,
      "stav": "rozbitá",
      "duvod": "míří na list, který v sešitu není: Sazby_2013"
    },
    {
      "nazev": "PREHLED_STARY",
      "odkaz": "'Prehled (2)'!$A$1",
      "skryty": false,
      "vestaveny": false,
      "lokalni_list": null,
      "stav": "rozbitá",
      "duvod": "míří na list, který v sešitu není: Prehled (2)"
    },
    {
      "nazev": "MARZE_STARA",
      "odkaz": "#REF!$B$2",
      "skryty": false,
      "vestaveny": false,
      "lokalni_list": null,
      "stav": "rozbitá",
      "duvod": "odkaz obsahuje #REF!"
    },
    {
      "nazev": "VSTUPY_ARCHIV",
      "odkaz": "'Vstupy_2015'!$A$4:$E$33",
      "skryty": false,
      "vestaveny": false,
      "lokalni_list": null,
      "stav": "rozbitá",
      "duvod": "míří na list, který v sešitu není: Vstupy_2015"
    }
  ],
  "externi_sesity": [
    {
      "index": 1,
      "cast": "xl/externalLinks/externalLink1.xml",
      "cil": "file:///\\\\SERVER-STARY\\ekonomika\\kurzy.xls"
    }
  ],
  "vba": {
    "pritomno": true,
    "velikost_bajtu": 16384,
    "cteno": true,
    "moduly": [
      {
        "nazev": "ThisWorkbook",
        "radku": 10,
        "radku_komentaru": 0
      },
      {
        "nazev": "List1",
        "radku": 1,
        "radku_komentaru": 0
      },
      {
        "nazev": "List2",
        "radku": 1,
        "radku_komentaru": 0
      },
      {
        "nazev": "List3",
        "radku": 1,
        "radku_komentaru": 0
      },
      {
        "nazev": "List4",
        "radku": 1,
        "radku_komentaru": 0
      },
      {
        "nazev": "List5",
        "radku": 1,
        "radku_komentaru": 0
      },
      {
        "nazev": "List6",
        "radku": 1,
        "radku_komentaru": 0
      },
      {
        "nazev": "List7",
        "radku": 1,
        "radku_komentaru": 0
      },
      {
        "nazev": "List8",
        "radku": 1,
        "radku_komentaru": 0
      },
      {
        "nazev": "List9",
        "radku": 1,
        "radku_komentaru": 0
      },
      {
        "nazev": "List10",
        "radku": 1,
        "radku_komentaru": 0
      },
      {
        "nazev": "List11",
        "radku": 1,
        "radku_komentaru": 0
      },
      {
        "nazev": "List12",
        "radku": 1,
        "radku_komentaru": 0
      },
      {
        "nazev": "List13",
        "radku": 1,
        "radku_komentaru": 0
      },
      {
        "nazev": "List14",
        "radku": 1,
        "radku_komentaru": 0
      },
      {
        "nazev": "List15",
        "radku": 1,
        "radku_komentaru": 0
      },
      {
        "nazev": "List16",
        "radku": 1,
        "radku_komentaru": 0
      },
      {
        "nazev": "List17",
        "radku": 1,
        "radku_komentaru": 0
      },
      {
        "nazev": "List18",
        "radku": 1,
        "radku_komentaru": 0
      },
      {
        "nazev": "List19",
        "radku": 1,
        "radku_komentaru": 0
      },
      {
        "nazev": "List20",
        "radku": 1,
        "radku_komentaru": 0
      },
      {
        "nazev": "List21",
        "radku": 1,
        "radku_komentaru": 0
      },
      {
        "nazev": "List22",
        "radku": 1,
        "radku_komentaru": 0
      },
      {
        "nazev": "List23",
        "radku": 1,
        "radku_komentaru": 0
      },
      {
        "nazev": "List24",
        "radku": 1,
        "radku_komentaru": 0
      },
      {
        "nazev": "List25",
        "radku": 1,
        "radku_komentaru": 0
      },
      {
        "nazev": "List26",
        "radku": 1,
        "radku_komentaru": 0
      },
      {
        "nazev": "List27",
        "radku": 1,
        "radku_komentaru": 0
      },
      {
        "nazev": "List28",
        "radku": 1,
        "radku_komentaru": 0
      },
      {
        "nazev": "List29",
        "radku": 1,
        "radku_komentaru": 0
      },
      {
        "nazev": "List30",
        "radku": 1,
        "radku_komentaru": 0
      },
      {
        "nazev": "List31",
        "radku": 1,
        "radku_komentaru": 0
      },
      {
        "nazev": "List32",
        "radku": 1,
        "radku_komentaru": 0
      },
      {
        "nazev": "List33",
        "radku": 1,
        "radku_komentaru": 0
      },
      {
        "nazev": "List34",
        "radku": 1,
        "radku_komentaru": 0
      },
      {
        "nazev": "modKalkulace",
        "radku": 96,
        "radku_komentaru": 25
      }
    ],
    "pocet_modulu": 36,
    "radku_kodu": 140,
    "radku_komentaru": 25,
    "on_error_resume_next": 3,
    "on_error_goto": 1,
    "goto": 1,
    "procedury": [
      "ThisWorkbook.Workbook_Open",
      "modKalkulace.PrepocitatCenik",
      "modKalkulace.NacistKurz",
      "modKalkulace.SkrytPomocneListy"
    ],
    "zamceno_heslem": true,
    "poznamka": null
  },
  "kontingencni_tabulky": {
    "pocet_cache": 0,
    "pocet_tabulek": 0
  },
  "nalezy": [
    {
      "kod": "CHYBA-01",
      "zavaznost": "kritická",
      "nazev": "Uložená chybová hodnota v buňce",
      "pocet": 6,
      "priklady": [
        "Prehled!D4 = #REF!",
        "Kalkulace_stara!D12 = #REF!",
        "Kalkulace_stara!D13 = #DIV/0!",
        "NEPOUZIVAT!C5 = #VALUE!",
        "NEPOUZIVAT!C6 = #N/A",
        "Kontrola!E8 = #N/A"
      ],
      "vysvetleni": "V sešitu jsou buňky, ve kterých je místo čísla chybová hodnota. Nejde o varování, které by se dalo přejít. Součty a další výpočty nad takovou buňkou vracejí tutéž chybu, takže se vada šíří dál. Rozpis podle druhu: #REF! (#ODKAZ!) 2×, #N/A (#NENÍ_K_DISPOZICI) 2×, #DIV/0! (#DĚLENÍ_NULOU!) 1×, #VALUE! (#HODNOTA!) 1×",
      "co_s_tim": "Dohledat, odkud chyba pochází. #REF! znamená, že odkazovaná buňka byla smazaná a původní hodnota je nenávratně pryč. #N/A znamená, že vyhledávání nenašlo, co hledalo. Obojí se opravuje u zdroje, ne obalením do IFERROR, protože to chybu jen schová.",
      "podrobnosti": {
        "rozpis": {
          "#REF!": 2,
          "#N/A": 2,
          "#DIV/0!": 1,
          "#VALUE!": 1
        }
      }
    },
    {
      "kod": "CYKL-01",
      "zavaznost": "kritická",
      "nazev": "Kruhový odkaz",
      "pocet": 2,
      "priklady": [
        "Kontrola!C22 → pomocne!B2",
        "Kontrola!C20 → Kontrola!C21"
      ],
      "vysvetleni": "Buňka počítá sama ze sebe, ať už přímo, nebo přes několik dalších buněk. Excel takový výpočet neumí dokončit. Buď hlásí kruhový odkaz a nechá v buňce nulu, nebo je v sešitu zapnutý iterativní výpočet a výsledek pak závisí na tom, kolikrát se sešit přepočítal. Dvě otevření téhož souboru mohou dát dvě různá čísla.",
      "co_s_tim": "Rozřezat smyčku. Obvykle to znamená oddělit vstupní hodnotu od kontrolního výpočtu, aby kontrola četla z výpočtu a ne naopak. Do té doby nepoužívat čísla z dotčené větve sešitu.",
      "podrobnosti": {
        "cykly": [
          [
            "Kontrola!C22",
            "pomocne!B2"
          ],
          [
            "Kontrola!C20",
            "Kontrola!C21"
          ]
        ]
      }
    },
    {
      "kod": "CHYBA-02",
      "zavaznost": "kritická",
      "nazev": "Rozbitý odkaz přímo ve vzorci",
      "pocet": 1,
      "priklady": [
        "Kalkulace_stara!F4 (#REF!)"
      ],
      "vysvetleni": "Ve vzorci je natvrdo zapsaná chybová hodnota, typicky #REF!. Vzniká to smazáním řádku nebo listu, na který vzorec ukazoval. Vzorec už nikdy nespočítá správný výsledek a z jeho textu se nedá vyčíst, kam původně ukazoval.",
      "co_s_tim": "Dohledat v historii souboru nebo v záloze, co na tom místě bylo, a odkaz obnovit. Když záloha není, je potřeba vzorec postavit znovu podle věcného zadání."
    },
    {
      "kod": "KONST-01",
      "zavaznost": "vysoká",
      "nazev": "Natvrdo zadaná konstanta ve vzorci",
      "pocet": 84,
      "priklady": [
        "Kalkulace!F4: 21, 100",
        "Kalkulace!G4: 1.21",
        "Kalkulace!H4: 1000, 1.35, 1850, 1.3350000000000002, 2, 2700, 1.32, 3, 3550, 1.3050000000000002, 4, 4400, 1.29, 5, 5250, 1.2750000000000001, 6, 6100, 1.26, 7, 6950, 1.245, 8, 7800, 1.23, 9, 8650, 1.215, 10, 9500, 1.2000000000000002, 11, 10350, 1.185, 12",
        "Kalkulace!F5: 21, 100",
        "Kalkulace!G5: 1.21",
        "Kalkulace!H5: 1.35",
        "Kalkulace!F6: 21, 100",
        "Kalkulace!G6: 1.21"
      ],
      "vysvetleni": "Číslo, které je obchodním parametrem, je zapsané uvnitř vzorce místo v samostatné buňce. Nejčastější hodnoty: 1.21 (17×), 21 (12×), 100 (12×), 2 (7×), 1.19 (6×), 1.03 (6×), 0.18 (6×), 0.12 (6×), 1.08 (6×), 0.94 (6×). Když se parametr změní, musí ho někdo najít a přepsat ve všech vzorcích. Jeden zapomenutý výskyt znamená tichou chybu v čísle, které nikdo nekontroluje, protože vzorec navenek funguje.",
      "co_s_tim": "Vytáhnout parametry na jeden list a ve vzorcích na ně odkazovat. U hodnot, které se mění v čase, doplnit platnost od a do, aby šlo dopočítat i starší období.",
      "podrobnosti": {
        "nejcastejsi_hodnoty": {
          "1.21": 17,
          "21": 12,
          "100": 12,
          "2": 7,
          "1.19": 6,
          "1.03": 6,
          "0.18": 6,
          "0.12": 6,
          "1.08": 6,
          "0.94": 6
        }
      }
    },
    {
      "kod": "TEXT-01",
      "zavaznost": "vysoká",
      "nazev": "Číslo uložené jako text",
      "pocet": 8,
      "priklady": [
        "Vstupy!C7 = '231'",
        "Vstupy!C10 = '342 '",
        "Vstupy!C13 = '453-'",
        "Vstupy!C15 = '527'",
        "Vstupy!C21 = '749 '",
        "Vstupy!C23 = '823'",
        "Vstupy!C28 = '1008-'",
        "Vstupy!C31 = '1 480'"
      ],
      "vysvetleni": "Buňka vypadá jako číslo, ale je v ní text. Vzniká to importem z jiného systému, koncovou mezerou, mínusem na konci nebo mezerou jako oddělovačem tisíců. Součet takovou hodnotu tiše přeskočí. Výsledek je nižší, než má být, a nikde není vidět proč.",
      "co_s_tim": "Převést na čísla a doplnit kontrolu, která porovná počet položek s počtem sečtených hodnot. U opakovaného importu opravit už import, jinak se to vrátí při dalším načtení."
    },
    {
      "kod": "NEKONZ-01",
      "zavaznost": "vysoká",
      "nazev": "Vzorec vybočující z okolního sloupce",
      "pocet": 8,
      "priklady": [
        "Kalkulace!E10",
        "Kalkulace!G10",
        "Material!F4",
        "Material!F7",
        "Material!F10",
        "Material!F13",
        "Material!F16",
        "pomocne!B2"
      ],
      "vysvetleni": "Ve sloupci, kde je jinak všude stejný vzorec, je buňka s jiným vzorcem. Buď je to záměrná výjimka, kterou nikdo nepopsal, nebo někdo vzorec omylem přepsal. Obojí se pozná jen tak, že se to hledá cíleně, protože navenek buňka vypadá stejně jako sousedé.",
      "co_s_tim": "Projít každou výjimku a rozhodnout. Záměrné výjimky odlišit barvou a popsat. Omylem přepsané vzorce vrátit do původní podoby a dopočítat, jak dlouho počítaly špatně."
    },
    {
      "kod": "NAZEV-01",
      "zavaznost": "vysoká",
      "nazev": "Pojmenovaná oblast mířící do prázdna",
      "pocet": 6,
      "priklady": [
        "KURZ_STARY → 'zaloha_2017'!$B$2 (míří na list, který v sešitu není: zaloha_2017)",
        "CENIK_2015 → 'Kalkulace_2015'!$A$1:$F$50 (míří na list, který v sešitu není: Kalkulace_2015)",
        "SAZBA_DPH_2013 → 'Sazby_2013'!$B$1 (míří na list, který v sešitu není: Sazby_2013)",
        "PREHLED_STARY → 'Prehled (2)'!$A$1 (míří na list, který v sešitu není: Prehled (2))",
        "MARZE_STARA → #REF!$B$2 (odkaz obsahuje #REF!)",
        "VSTUPY_ARCHIV → 'Vstupy_2015'!$A$4:$E$33 (míří na list, který v sešitu není: Vstupy_2015)"
      ],
      "vysvetleni": "Pojmenovaná oblast ukazuje na list nebo buňku, které v sešitu nejsou. Vzorec, který takové jméno použije, vrátí chybu. Rozbitá jména navíc putují do každé kopie sešitu a do každého listu, který se odsud zkopíruje.",
      "co_s_tim": "Nepoužívaná jména smazat, používaná opravit. Před mazáním ověřit, jestli jméno nepoužívá makro nebo ověření dat, protože tam se závislost nehledá tak snadno jako ve vzorcích."
    },
    {
      "kod": "SKRYT-02",
      "zavaznost": "vysoká",
      "nazev": "Velmi skrytý list",
      "pocet": 5,
      "priklady": [
        "zaloha_2018",
        "Mzdy",
        "Data_import",
        "Archiv_2017",
        "zaloha_2018 (2)"
      ],
      "vysvetleni": "Stav veryHidden znamená, že list nejde odkrýt běžnou cestou přes nabídku. Odkrytí vyžaduje editor VBA. Takto se listy schovávají záměrně, aby je nikdo neviděl, a to je samo o sobě zjištění: část logiky sešitu je mimo dohled těch, kdo s ním pracují.",
      "co_s_tim": "Odkrýt, obsah přečíst a rozhodnout. Buď je to funkční část sešitu a patří do dokumentace, nebo je to pozůstatek a patří pryč."
    },
    {
      "kod": "VBA-02",
      "zavaznost": "vysoká",
      "nazev": "Riziková konstrukce v kódu VBA",
      "pocet": 4,
      "priklady": [
        "On Error Resume Next 3×",
        "GoTo 1×",
        "On Error GoTo 1×"
      ],
      "vysvetleni": "On Error Resume Next znamená, že se chyba přeskočí a program pokračuje dál. Výsledek je, že makro proběhne a tváří se, že všechno vyšlo, přestože část práce neudělalo. Skoky GoTo dělají z kódu něco, co se nedá číst shora dolů, takže se v něm chyba hledá jen těžko.",
      "co_s_tim": "Odstranit plošné potlačení chyb. Kde je potřeba chybu snést, ošetřit ji na jednom konkrétním místě a zapsat do protokolu. Skoky nahradit běžnými podmínkami a cykly."
    },
    {
      "kod": "EXT-01",
      "zavaznost": "vysoká",
      "nazev": "Odkaz do jiného sešitu",
      "pocet": 3,
      "priklady": [
        "Kurzy!B7",
        "Kurzy!B8",
        "Material!H4"
      ],
      "vysvetleni": "Sešit čte hodnoty z jiného souboru. Cíle: file:///\\\\SERVER-STARY\\ekonomika\\kurzy.xls. Dokud je zdrojový soubor dostupný, funguje to. Jakmile se přesune, přejmenuje nebo zmizí disk, drží sešit poslední hodnotu, která se stihla uložit, a tváří se, že je aktuální. Nikdo přitom nevidí, jak je stará.",
      "co_s_tim": "Rozhodnout u každého odkazu, jestli má být trvalý, nebo jestli jde o jednorázový import. Trvalé napojení nahradit řízeným importem s datem načtení. Jednorázové hodnoty vložit jako hodnoty a zdroj poznamenat.",
      "podrobnosti": {
        "sesity": [
          {
            "index": 1,
            "cast": "xl/externalLinks/externalLink1.xml",
            "cil": "file:///\\\\SERVER-STARY\\ekonomika\\kurzy.xls"
          }
        ]
      }
    },
    {
      "kod": "VYHLED-01",
      "zavaznost": "vysoká",
      "nazev": "Vyhledávací funkce bez ošetření chyby",
      "pocet": 2,
      "priklady": [
        "NEPOUZIVAT!D4: VLOOKUP (SVYHLEDAT)",
        "Kontrola!B10: VLOOKUP (SVYHLEDAT)"
      ],
      "vysvetleni": "Vzorec vyhledává hodnotu v tabulce a nemá ošetřený případ, kdy hodnotu nenajde. Výsledkem je #N/A, a součet nad ním vrátí #N/A také. Praktický dopad: stačí, aby v číselníku přibyla nová položka, a rozpadne se celý výkaz.",
      "co_s_tim": "U každého vyhledání rozhodnout, co se má stát, když se nenajde. Někde je správně nula, jinde prázdno a jinde hlasitá chyba, protože ta situace nastat nesmí. Ošetřit funkcí IFNA nebo IFERROR až po tom rozhodnutí, ne plošně."
    },
    {
      "kod": "DLOUHY-01",
      "zavaznost": "vysoká",
      "nazev": "Extrémně dlouhý nebo hluboko vnořený vzorec",
      "pocet": 1,
      "priklady": [
        "Kalkulace!H4 (723 znaků, vnoření 12, 12× KDYŽ)"
      ],
      "vysvetleni": "Vzorec je tak dlouhý nebo tak hluboko vnořený, že ho nikdo nepřečte na jeden zátah a nikdo ho neopraví bez rizika. Hranice je 250 znaků, vnoření do šesti úrovní nebo sedm vnořených podmínek. Takový vzorec se typicky nedá otestovat, protože jeho větve už dávno nikdo neprošel.",
      "co_s_tim": "Rozložit na mezikroky do pomocných sloupců, které jde jednotlivě zkontrolovat. Řetěz vnořených podmínek nad číselníkem nahradit vyhledáním v tabulce, kterou lze doplňovat bez zásahu do vzorce."
    },
    {
      "kod": "VBA-01",
      "zavaznost": "vysoká",
      "nazev": "Sešit obsahuje makra",
      "pocet": 1,
      "priklady": [
        "ThisWorkbook.Workbook_Open",
        "modKalkulace.PrepocitatCenik",
        "modKalkulace.NacistKurz",
        "modKalkulace.SkrytPomocneListy"
      ],
      "vysvetleni": "V sešitu je kód VBA. Modulů: 36, řádků kódu: 140, z toho zakomentovaných: 25. Kód se spouští buď ručně, nebo automaticky při otevření souboru, a může měnit hodnoty bez toho, aby o tom kdokoli věděl. Bez dokumentace se nedá říct, co přesně dělá a na čem závisí.",
      "co_s_tim": "Kód projít a popsat, co dělá, co mění a kdy se spouští. Rozhodnout, co z toho je pořád potřeba. Zbytek odstranit, protože každý řádek, který nikdo nechápe, je riziko.",
      "podrobnosti": {
        "moduly": [
          {
            "nazev": "ThisWorkbook",
            "radku": 10,
            "radku_komentaru": 0
          },
          {
            "nazev": "List1",
            "radku": 1,
            "radku_komentaru": 0
          },
          {
            "nazev": "List2",
            "radku": 1,
            "radku_komentaru": 0
          },
          {
            "nazev": "List3",
            "radku": 1,
            "radku_komentaru": 0
          },
          {
            "nazev": "List4",
            "radku": 1,
            "radku_komentaru": 0
          },
          {
            "nazev": "List5",
            "radku": 1,
            "radku_komentaru": 0
          },
          {
            "nazev": "List6",
            "radku": 1,
            "radku_komentaru": 0
          },
          {
            "nazev": "List7",
            "radku": 1,
            "radku_komentaru": 0
          },
          {
            "nazev": "List8",
            "radku": 1,
            "radku_komentaru": 0
          },
          {
            "nazev": "List9",
            "radku": 1,
            "radku_komentaru": 0
          },
          {
            "nazev": "List10",
            "radku": 1,
            "radku_komentaru": 0
          },
          {
            "nazev": "List11",
            "radku": 1,
            "radku_komentaru": 0
          },
          {
            "nazev": "List12",
            "radku": 1,
            "radku_komentaru": 0
          },
          {
            "nazev": "List13",
            "radku": 1,
            "radku_komentaru": 0
          },
          {
            "nazev": "List14",
            "radku": 1,
            "radku_komentaru": 0
          },
          {
            "nazev": "List15",
            "radku": 1,
            "radku_komentaru": 0
          },
          {
            "nazev": "List16",
            "radku": 1,
            "radku_komentaru": 0
          },
          {
            "nazev": "List17",
            "radku": 1,
            "radku_komentaru": 0
          },
          {
            "nazev": "List18",
            "radku": 1,
            "radku_komentaru": 0
          },
          {
            "nazev": "List19",
            "radku": 1,
            "radku_komentaru": 0
          },
          {
            "nazev": "List20",
            "radku": 1,
            "radku_komentaru": 0
          },
          {
            "nazev": "List21",
            "radku": 1,
            "radku_komentaru": 0
          },
          {
            "nazev": "List22",
            "radku": 1,
            "radku_komentaru": 0
          },
          {
            "nazev": "List23",
            "radku": 1,
            "radku_komentaru": 0
          },
          {
            "nazev": "List24",
            "radku": 1,
            "radku_komentaru": 0
          },
          {
            "nazev": "List25",
            "radku": 1,
            "radku_komentaru": 0
          },
          {
            "nazev": "List26",
            "radku": 1,
            "radku_komentaru": 0
          },
          {
            "nazev": "List27",
            "radku": 1,
            "radku_komentaru": 0
          },
          {
            "nazev": "List28",
            "radku": 1,
            "radku_komentaru": 0
          },
          {
            "nazev": "List29",
            "radku": 1,
            "radku_komentaru": 0
          },
          {
            "nazev": "List30",
            "radku": 1,
            "radku_komentaru": 0
          },
          {
            "nazev": "List31",
            "radku": 1,
            "radku_komentaru": 0
          },
          {
            "nazev": "List32",
            "radku": 1,
            "radku_komentaru": 0
          },
          {
            "nazev": "List33",
            "radku": 1,
            "radku_komentaru": 0
          },
          {
            "nazev": "List34",
            "radku": 1,
            "radku_komentaru": 0
          },
          {
            "nazev": "modKalkulace",
            "radku": 96,
            "radku_komentaru": 25
          }
        ]
      }
    },
    {
      "kod": "VOLAT-01",
      "zavaznost": "střední",
      "nazev": "Volatilní funkce",
      "pocet": 38,
      "priklady": [
        "Prehled!A2: NOW (NYNÍ)",
        "Prehled!D5: OFFSET (POSUN)",
        "Prehled!D6: INDIRECT (NEPŘÍMÝ.ODKAZ)",
        "Prehled!B12: TODAY (DNES)",
        "Pokus!A4: OFFSET (POSUN)",
        "Pokus!B4: INDIRECT (NEPŘÍMÝ.ODKAZ)",
        "Pokus!A5: OFFSET (POSUN)",
        "Pokus!A6: OFFSET (POSUN)"
      ],
      "vysvetleni": "Tyto funkce se přepočítávají při každé změně kdekoli v sešitu, ne jen když se změní jejich vstup. Rozpis: TODAY (DNES) 14×, OFFSET (POSUN) 12×, INDIRECT (NEPŘÍMÝ.ODKAZ) 9×, NOW (NYNÍ) 3×. Odtud pochází pocit, že soubor je pomalý. DNES a NYNÍ navíc znamenají, že sešit dává dnes jiný výsledek než včera, takže se nedá reprodukovat starší výstup. POSUN a NEPŘÍMÝ.ODKAZ skládají odkaz z textu, takže při vložení řádku ukážou jinam, aniž by to bylo vidět.",
      "co_s_tim": "DNES a NYNÍ nahradit buňkou s datem, které se zapíše ručně nebo při uzávěrce. POSUN a NEPŘÍMÝ.ODKAZ nahradit funkcí INDEX, která dělá totéž a přepočítává se jen při změně vstupu.",
      "podrobnosti": {
        "rozpis": {
          "TODAY (DNES)": 14,
          "OFFSET (POSUN)": 12,
          "INDIRECT (NEPŘÍMÝ.ODKAZ)": 9,
          "NOW (NYNÍ)": 3
        }
      }
    },
    {
      "kod": "SKRYT-01",
      "zavaznost": "střední",
      "nazev": "Skrytý list",
      "pocet": 6,
      "priklady": [
        "Kalkulace_stara",
        "Pokus",
        "Sazby",
        "Export",
        "pomocne",
        "Sheet1"
      ],
      "vysvetleni": "Listy, které nejsou vidět, ale sešit z nich počítá. Kdo soubor přebírá, netuší, že existují, a při úpravě je nezkontroluje.",
      "co_s_tim": "Projít, co v nich je. Co je potřeba, zviditelnit nebo popsat v dokumentaci sešitu. Co je zbytek po staré verzi, smazat."
    },
    {
      "kod": "SLOUC-01",
      "zavaznost": "střední",
      "nazev": "Sloučené buňky v datové oblasti",
      "pocet": 3,
      "priklady": [
        "Kalkulace!B15:D15 (1×3)",
        "Kalkulace!B7:C7 (1×2)",
        "Sestava!A10:A12 (3×1)"
      ],
      "vysvetleni": "Sloučené buňky uvnitř dat rozbíjejí řazení, filtrování, kontingenční tabulky i kopírování vzorců. Hodnota je fyzicky jen v levém horním rohu, ostatní buňky jsou prázdné, takže součty a vyhledávání nad nimi vracejí nesmysly.",
      "co_s_tim": "Slučování v datech zrušit a nahradit ho zarovnáním na střed výběru. Vzhled zůstane stejný, funkce se vrátí. Ve výkazové části, kde jde jen o vzhled, může slučování zůstat."
    },
    {
      "kod": "DUP-01",
      "zavaznost": "střední",
      "nazev": "Listy s podezřele podobným názvem",
      "pocet": 3,
      "priklady": [
        "Ceník_2019, cenik_final, cenik_final_2",
        "Kalkulace, Kalkulace (2), Kalkulace_stara",
        "List1, List1 (2)"
      ],
      "vysvetleni": "Skupiny listů, jejichž názvy se liší jen příponou typu kopie, stará, záloha, final nebo číslem v závorce. Obvykle to znamená, že vedle sebe žije několik verzí téhož výpočtu a nikdo neví, která platí. Riziko je v tom, že se opraví jedna a použije druhá.",
      "co_s_tim": "U každé skupiny určit jednu platnou verzi, ostatní přesunout do archivu mimo pracovní sešit. Rozdíly mezi verzemi předtím porovnat, protože ve staré verzi bývá logika, která se do nové nedostala."
    },
    {
      "kod": "ZAMEK-01",
      "zavaznost": "střední",
      "nazev": "Zamčený list",
      "pocet": 3,
      "priklady": [
        "Kalkulace (heslem)",
        "cenik_final (heslem)",
        "Sazby (heslem)"
      ],
      "vysvetleni": "Listy jsou zamčené proti úpravám. Když heslo nikdo nezná, nedá se opravit ani zjevná chyba a nedá se do listu doplnit nová položka. Zámek listu v Excelu není bezpečnostní opatření, jde o ochranu proti překlepu.",
      "co_s_tim": "Dohledat hesla u autora sešitu. Když se nedohledají, zámky odstranit a nahradit jasným rozdělením na vstupní a počítané buňky."
    },
    {
      "kod": "TEXT-02",
      "zavaznost": "střední",
      "nazev": "Datum uložené jako text",
      "pocet": 2,
      "priklady": [
        "Vstupy!G7 = '1.2.2019'",
        "Vstupy!G8 = '2019/02/01'"
      ],
      "vysvetleni": "Datum je v buňce uložené jako text, ne jako datum. Řazení pak řadí abecedně, filtr podle období nefunguje a výpočet rozdílu dnů skončí chybou.",
      "co_s_tim": "Sjednotit na jeden formát data a převést na skutečné datum. Pokud data chodí z externího systému, opravit místo, kde vznikají."
    },
    {
      "kod": "VBA-03",
      "zavaznost": "střední",
      "nazev": "Projekt VBA je zamčený heslem",
      "pocet": 1,
      "priklady": [
        "projekt je chráněný heslem"
      ],
      "vysvetleni": "Kód maker je zamčený. Bez hesla se nedá otevřít v editoru, takže nikdo ve firmě neví, co makro dělá. Zámek přitom nechrání data, jde jen o zábranu proti nahlédnutí a jde obejít.",
      "co_s_tim": "Dohledat heslo u autora. Pokud se nedohledá, kód zpřístupnit a od toho okamžiku držet zdrojový kód mimo sešit, ve verzované složce."
    },
    {
      "kod": "FORMAT-01",
      "zavaznost": "nízká",
      "nazev": "Nános pravidel podmíněného formátování",
      "pocet": 396,
      "priklady": [
        "Prehled: B4:B13 × B5:B13",
        "Prehled: B5:B13 × B6:B13",
        "Prehled: B6:B13 × B7:B13",
        "Prehled: B7:B13 × B8:B13",
        "Prehled: B8:B13 × B9:B13"
      ],
      "vysvetleni": "V sešitu je 396 pravidel podmíněného formátování, z toho 236 bloků se překrývá s jiným. Pravidla se v Excelu při kopírování řádků rozpadají na stále menší oblasti, takže jich časem přibývá samo. Nad určitou hranicí to zpomaluje otevírání souboru a barvy přestávají odpovídat tomu, co si kdo myslí, že znamenají.",
      "co_s_tim": "Pravidla vyčistit a nastavit znovu na celé sloupce místo na jednotlivé buňky. Význam barev napsat do legendy, jinak si je každý vyloží po svém.",
      "podrobnosti": {
        "pravidel": 396,
        "prekryvajicich_se_bloku": 236
      }
    }
  ],
  "omezeni": [
    "Nástroj nepočítá hodnoty. Čte, co je v souboru uložené, včetně výsledků z posledního uložení. Jestli je uložený výsledek správný, z toho nezjistí.",
    "Nevidí do zkompilovaného VBA. Čte zdrojový text modulů, pokud je v souboru uložený a čitelný. Co kód dělá za běhu, se z něj nepozná.",
    "Nerozumí Power Query, datovým modelům a připojením. Pozná, že tam jsou, a víc ne. Transformace uvnitř dotazu zůstane neprozkoumaná.",
    "Nekontroluje kontingenční tabulky proti jejich zdroji. Pozná, že tabulka má vlastní mezipaměť, ale neporovná ji s daty.",
    "Nečte grafy, tvary, ovládací prvky ani vložené objekty.",
    "U sdílených vzorců (<f t=\"shared\">) dopočítává text vzorce posunem relativních odkazů z hlavní buňky skupiny. Odpovídá to tomu, co Excel dělá, ale u dynamických polí to nemusí sedět.",
    "Rozpoznávání natvrdo zadaných konstant je odhad podle tabulky strukturních argumentů. U funkcí, které v tabulce nejsou, může hlásit i konstantu, která tam patří.",
    "Tabulka českých názvů funkcí pokrývá běžné funkce, ne úplný seznam. V souboru jsou názvy stejně vždy uložené anglicky.",
    "Hledání kruhových odkazů má strop na velikost grafu. U velmi velkých sešitů může být neúplné. Když k tomu dojde, je to ve výstupu napsané.",
    "Nástroj nenahrazuje otevření sešitu v Excelu. Řada vad se pozná až z toho, jak se soubor chová při přepočtu."
  ]
}
