{"id":193452,"date":"2026-05-08T14:36:25","date_gmt":"2026-05-08T07:36:25","guid":{"rendered":"https:\/\/www.hashmicro.com\/id\/blog\/?p=193452"},"modified":"2026-05-08T14:36:25","modified_gmt":"2026-05-08T07:36:25","slug":"contoh-format-stock-opname-excel","status":"publish","type":"post","link":"https:\/\/www.hashmicro.com\/id\/blog\/contoh-format-stock-opname-excel\/","title":{"rendered":"Contoh Format Stock Opname Excel serta Templatenya"},"content":{"rendered":"<p>Setiap akhir periode, ada satu pertanyaan yang hampir selalu memicu kepanikan di bagian gudang: &#8220;Kok angkanya beda dengandi sistem?&#8221; Selisih stok adalah masalah yang terdengar sepele tapi dampaknya jauh lebih luas dari yang terlihat.<\/p>\n<p>Stok yang tercatat 120 unit sementara fisiknya hanya 117 bukan sekadar perbedaan angka. Ini bisa berarti ada barang yang hilang tanpa jejak, transaksi yang tidak dicatat, atau keputusan pembelian yang dibuat berdasarkan data yang salah sejak awal.<\/p>\n<p>Di sinilah laporan stock opname Excel bekerja. Bukan sebagai formalitas administratif, tapi sebagai proses verifikasi yang menjaga data stok Anda tetap jujur terhadap kondisi nyata di lapangan.<\/p>\n<table style=\"border-collapse: collapse; background-color: #fffacd; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); border-radius: 25px 25px 25px 25px;\" width=\"100%\">\n<tbody>\n<tr>\n<td style=\"padding: 15px; border: none;\">\n<h3 style=\"margin-bottom: 10px;\"><span style=\"background-color: #990000; color: #ffffff; padding: 5px;\"><b>Key Takeaways<\/b><\/span><\/h3>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><a href=\"#a\">Laporan stock opname<\/a> yang akurat dimulai dari persiapan yang benar, seperti freeze transaksi dan blind count.<\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\">Formula IFERROR, IF berlapis, <a href=\"#b\">SUMIF, dan COUNTIF<\/a> sudah cukup untuk mengotomatiskan 90% proses kalkulasi selisih stok di Excel.<\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><a href=\"#c\">Excel efektif untuk inventaris<\/a> di bawah 500 SKU; di atas itu, biaya waktu input manual biasanya melebihi nilai penghematannya.<\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\">Selisih stok yang tidak <a href=\"#d\">ditindaklanjuti dengan investigasi<\/a> penyebab akan terus berulang, apapun alat yang digunakan. <div id=\"toc_group_article\" style=''>\r\n\t<p style='font-size:25px;font-weight:bold; margin-bottom:0px'>\r\n\t\tDaftar Isi:\r\n\t<\/p>\r\n\t<ul id=\"list_toc\" class='list_toc'><\/ul>\r\n<\/div>\r\n\r\n<div id=\"placeholder-toc\"><\/div>\r\n<div id=\"toc\">\r\n    <div class=\"header\">\r\n\t<span class=\"toc-title\" id=\"toc-title\">Daftar Isi<\/span>\t\r\n\t <i class=\"toc-icon\">\r\n        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"30\" height=\"30\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#000\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"header-icon\">\r\n          <path d=\"m6 9 6 6 6-6\" \/>\r\n        <\/svg>\r\n      <\/i>\r\n\t<\/div>\r\n    <div class=\"list\">\r\n      <ul id=\"toc-list\"><\/ul>\r\n    <\/div>\r\n <\/div>\r\n\r\n<style>\r\n\/* Simple styling for the TOC *\/\r\n\t\r\n\t#toc ul li:last-child {\r\n    padding-bottom: 16px; \/* Adjust the value as needed *\/\r\n}\r\n\r\n.td-fix-index {\r\n\t transform: unset !important;\r\n     -webkit-transform: unset !important; \r\n}\r\n.footer-contact .td-fix-index {\r\n\t transform: translateZ(0) !important;\r\n     -webkit-transform: translateZ(0) !important; \r\n}\r\n\t.tdb_single_content .tdb-block-inner.td-fix-index{\r\n\t\tposition: static;\r\n\t}\r\n\t\r\n\r\n\r\n\t\r\n#toc {\r\n  background-color: #FFF;\r\n\tpadding: 17px 24px 0px 24px !important;\r\n  margin-bottom: 20px;\r\n\/*   border: 1px solid #9C171E; *\/\r\n  border-radius: 6px;\r\n\tdisplay: none;\r\n  max-width: 100%;\r\n  transition: .4s ease height;\r\n\tmargin-left: 0;\r\n\toverflow: hidden;\r\n}\r\n\r\n#toc .header{\r\n  display: flex;\r\n  align-items: center;\r\n  justify-content: space-between;\r\n\tbackground-color: transparent;\r\n}\r\n\t\r\n\t#toc.sticky .header{\r\n\t\tpadding: 4px 0;\r\n\t}\r\n\t\r\n.header p{\r\n  font-size: 18px !important;\r\n  font-weight: 600 !important;\r\n  color: #393939;\r\n   margin-bottom: 0;\r\n  \/* margin-top: 20px; *\/\r\n}\r\n\r\n.toc-icon{\r\n  float: right;\r\n\/*   visibility: hidden; *\/\r\n}\r\n\r\n\t.toc-title{\r\n\t\tmargin-right: auto;\r\n\/* \t\tpadding-left: 20px; *\/\r\n\t\tfont-weight: 600;\r\n\t\talign-self: center;\t}\t\r\n\r\n#toc ul {\r\n  list-style-type: none;\r\n  padding-left: 0;\r\n}\r\n\t\r\n#toc.sticky ul{\r\n\toverflow-y: auto;\r\n\tmax-height: 250px;\r\n\tmargin-top: 0px;\r\n\tpadding-top: 20px;\r\n\/* \tborder-top: 1px solid #d3d3d3; *\/\r\n}\r\n\t\r\n#toc ul li {\r\n\/*   margin-bottom: 10px; *\/\r\n  margin-bottom: 10px;\r\n\tmargin-left: 0;\r\n\ttransition: .2s ease;\r\n\tcursor: pointer;\r\n}\r\n\t\r\n\t#toc.sticky ul li {\r\n\t  margin-right: 10px;\r\n\t}\r\n\t\r\n.td-post-content #toc-list li a:hover, .td-post-content #toc-list a.active{\r\n\tbackground-color: #FFF;\r\n\/* \tpadding: 8px 16px 8px 16px; *\/\r\n\tpadding: 4px 16px 4px 16px;\r\n\tborder-radius: 6px;\r\n\tcolor: #9c171e !important;\r\n\tfont-weight: 600 !important;\r\n}\r\n\t\r\n\t.td-post-content #toc-list li:hover a, .td-post-content #toc-list a.active{\r\n\t\tcolor: #9C171E !important;\r\n\t\tfont-weight: 600 !important;\r\n\t}\r\n\t\r\n.td-post-content #toc-list a.active{\r\n\tfont-weight: bold !important;\r\n\tcolor: #9C171E !important;\r\n}\r\n\t\r\n#toc a, .td-post-content #toc-list a {\r\n  text-decoration: none;\r\n  color: #ea1717 !important;\r\n  transition: .2s ease;\r\n\tfont-weight: 400 !important;\r\n\tdisplay: block;\r\n\t\r\n\tpadding: 4px 16px 4px 0;\r\n}\r\n\r\n#toc.sticky {\r\n  position: fixed;\r\n\/*   top: 73px; *\/\r\n\tbottom: 0;\r\n  z-index: 100; \r\n  box-shadow: 0 2px 5px rgba(0,0,0,0.1); \r\n\twidth: 100%; \r\n\tbackground-color: #FFF;\r\n\/* \tbackground-color: #FFF1F1; *\/\r\n\tborder-bottom: 1px solid #ea1717;\r\n\/*   border: 1px solid #393939; *\/\r\n  box-shadow: 0px 0px 14px 0px #00000040;\r\n  cursor: pointer;\r\n\tanimation: fadein .3s ease;\r\n\tpadding: 12px 16px !important;\r\n}\r\n\t\r\n\t.fadein{\r\n\t\tanimation: fadein .3s ease;\r\n\t}\r\n\t\r\n\t.fadeout{\r\n\t\tanimation: fadeout .3s ease;\r\n\t}\r\n\t\r\n\t\r\n\t@keyframes fadein{\r\n\t\t0% {\r\n\t\t\topacity: 0;\r\n\t\t}\r\n\t\t100%{\r\n\t\t\topacity: 1;\r\n\t\t}\r\n\t}\r\n\t\r\n\t@keyframes fadeout{\r\n\t\t0% {\r\n\t\t\topacity: 1;\r\n\t\t}\r\n\t\t100%{\r\n\t\t\topacity: 0;\r\n\t\t}\r\n\t}\r\n\r\n\t\r\n#toc.sticky .header p{\r\n\tmargin-bottom: 10px;\r\n\tmargin-top: 10px;\r\n}\r\n\r\n#toc.sticky .toc-icon{\r\n  visibility: visible;\r\n\/* \ttransition: 0.4s ease; *\/\r\n}\r\n\t\r\n\t.toc-icon{\r\n\t\talign-items: center;\r\n    \tdisplay: flex;\r\n\t}\r\n\t\r\n\tsvg.header-icon{\r\n\/* \t\tbackground-color: #9c171e; *\/\r\n\t\tbackground-color: #FFF;\r\n\t\tborder-radius: 30px;\r\n\t\tpadding: 5px;\r\n\t}\r\n\r\n#toc.sticky .list{\r\n\/*   max-height: 0; *\/\r\n  transition: height 0.4s ease;\r\n}\r\n\t\r\n\t#toc .list{\r\n\/*   max-height: 0; *\/\r\n  transition: height 0.4s ease;\r\n}\r\n\r\n#toc .header.active .toc-icon{\r\n\ttransform: rotate(0deg); \r\n\topacity: 1;\r\n}\r\n\r\n\t#toc .header.active + .list {\r\n\t  max-height: 200px; \/* Adjust this value as needed *\/\r\n\t  opacity: 1;\r\n\t}\r\n\t\r\n\t#placeholder-toc{\r\n\/* \t\tdisplay: none; *\/\r\n\t}\r\n\t\r\n\t@media (min-width: 768px) and (max-width: 991px){\r\n\t\t#toc.sticky{\r\n\/* \t\t\ttop: 104px; *\/\r\n\t\t\tbottom: 0px;\r\n\t\t}\r\n\t\t\r\n\t\t#toc{\r\n\t\t\twidth: unset !important;\r\n\t\t}\r\n\t}\r\n\t\r\n\t@media (max-width: 767px){\r\n\t\t#toc{\r\n\t\t\twidth: 100% !important;\r\n\t\t\tdisplay: inline-block;\r\n\t\t}\r\n\t\t\r\n\t\t#toc.sticky{\r\n\t\t\twidth: 90% !important;\r\n\/* \t\t\ttop: 81px; *\/\r\n\t\t\tbottom: 60px;\r\n\t\t\tmargin-left: auto;\r\n\t\t\tmargin-right: auto;\r\n\t\t\tpadding: 0 16px;\r\n\t\t\tright: 5%;\r\n\t\t}\r\n\t}\r\n\t\r\n\t<\/style>\r\n\r\n<style>\r\n\t#list_toc li {margin-bottom: 0;margin-top: 5px;}\r\n\t#list_toc > li > ul {padding-left: 20px;margin-bottom: 0;}\r\n\t#list_toc{height:max-content;transition:ease-in-out}\r\n\t#list_toc li {margin-bottom: 0;margin-top: 5px;}\r\n\t#list_toc_float li.active > a {color:#b1252d;background: #ffe1e3;}\r\n\t#list_toc_float li a {padding:3px 7px}\r\n\t#list_toc_float li a {\r\n\t\tdisplay: block;\r\n\t\tcolor:#000;\r\n\t\tmargin-bottom: 10px;\r\n\t\ttransition:all 0.2s ease-in-out;\r\n\t\tfont-size:15px\r\n\t}\r\n\t#list_toc_float li{list-style:none;list-style-position:inside; margin-left:0;}\r\n\t#list_toc_float a:hover{color:#b1252d;}\r\n\t\r\n\t#list_toc_float li a{margin-bottom:0px}\r\n\t#toc_group_float{\r\n\t\tline-height: 24px;\r\n\t\tmax-height: calc(100vh - 100px);\r\n\t\toverflow: auto;\r\n\t\tz-index: 99;\r\n\t\tdisplay:none!important;\r\n\t\tbackground:#fff;\r\n\t\ttransition:all 0.5s linear\r\n\t}\r\n\t\r\n\t@media (min-width:1019px){\r\n\t\t#toc_group_float {\r\n\t\t\tdisplay:block!important;\r\n\t\t\t}\r\n\t\t#toc_group_article {\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\t}\r\n\t\r\n\t@media (max-width:768px){\r\n\t\t#toc_group_article {\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\t}\r\n\t\r\n\t \/* custom scrollbar style *\/\r\n::-webkit-scrollbar {\r\n    width: 7px;\r\n}\r\n::-webkit-scrollbar-track {\r\n    background: #d7a2a4;\r\n}\r\n::-webkit-scrollbar-thumb {\r\n    background: #b1252d;\r\n    border-radius: 15px;\r\n}\t\t\r\n\r\n<\/style>\r\n\r\n<script>\r\n\tdocument.addEventListener('DOMContentLoaded', function() {\r\n\t\t\/\/ Fungsi untuk menangani klik pada semua elemen <a> dengan href yang dimulai dengan #\r\n\t\tfunction handleTitleClick(event) {\r\n\t\t\tevent.preventDefault();\r\n\t\t\tconst targetId = this.getAttribute('href').substring(1);\r\n\t\t\tconst targetElement = document.getElementById(targetId);\r\n\r\n\t\t\tif (targetElement) {\r\n\t\t\t\tconst headerHeight = document.querySelector('#toc .header').offsetHeight;\r\n\t\t\t\tconst navbarHeight = document.getElementById('tdi_34') ? document.getElementById('tdi_34').offsetHeight : 0;\r\n\t\t\t\tconst windowHeight = window.innerHeight;\r\n\t\t\t\tconst targetOffset = targetElement.offsetTop;\r\n\t\t\t\tconst scrollTo = targetOffset + (windowHeight \/ 2) + (headerHeight) - navbarHeight - 40;\r\n\r\n\t\t\t\twindow.scrollTo({\r\n\t\t\t\t\ttop: scrollTo,\r\n\t\t\t\t\tbehavior: 'smooth'\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t\/\/ Tambahkan event listener untuk semua elemen <a> di toc-list dan list-toc\r\n\t\tconst titleLinks = document.querySelectorAll('#toc-list a, #list_toc a');\r\n\t\ttitleLinks.forEach(link => {\r\n\t\t\tlink.addEventListener('click', handleTitleClick);\r\n\t\t});\r\n\t});\r\n<\/script>\r\n\r\n<!-- ToC List for mobile -->\r\n<script>\r\n \/\/ Generate TOC based on headings\r\ndocument.addEventListener(\"DOMContentLoaded\", function() {\r\n  \/\/ Get the element that will contain the TOC\r\n  const tocList = document.getElementById('toc-list');\r\n\r\n  \/\/ Get the element with the ID 'article-left'\r\n  const article = document.querySelector('.td-post-content');\r\n\r\n  \/\/ Find all h2 elements within 'myarticle'\r\n  const headers = article.getElementsByTagName('h2');\r\n\r\n  \/\/ Loop through the h2 elements and create a list item for each one\r\n  for (let i = 0; i < headers.length; i++) {\r\n    const header = headers[i];\r\n    const headerText = header.textContent;\r\n\/\/     const headerId = 'header-' + i;\r\n    const headerId = headerText\r\n    .toLowerCase()\r\n    .trim()\r\n    .replace(\/[^\\w\\s-]\/g, '')  \/\/ hapus tanda baca\r\n    .replace(\/\\s+\/g, '-'); \/\/ ganti spasi jadi \"-\"\r\n\r\n    \/\/ Set an ID for the header if it doesn't have one\r\n    header.setAttribute('id', headerId);\r\n\r\n    \/\/ Create a list item for the TOC\r\n    const listItem = document.createElement('li');\r\n\r\n    \/\/ Create a link for the list item\r\n    const link = document.createElement('a');\r\n    link.setAttribute('href', '#' + headerId);\r\n    link.textContent = headerText;\r\n\r\n    \/\/ Append the link to the list item\r\n    listItem.appendChild(link);\r\n\r\n    \/\/ Append the list item to the TOC list\r\n    tocList.appendChild(listItem);\r\n  }\r\n});\r\n\r\n\/\/ Keep height and placement of content using placeholder in place of TOC\r\ndocument.addEventListener(\"DOMContentLoaded\", function() {\r\n  const toc = document.querySelector('#toc');\r\n  const placeholderToc = document.querySelector('#placeholder-toc');\r\n\r\n  function setPlaceholderHeight() {\r\n    placeholderToc.style.height = `${toc.offsetHeight}px`;\r\n  }\r\n\r\n  \/\/ Set the initial height of the placeholder\r\n  setPlaceholderHeight();\r\n\r\n  \/\/ Update the height on window resize\r\n  window.addEventListener('resize', setPlaceholderHeight);\r\n});\r\n  const tocTitle = document.querySelector('#toc-title'); \/\/ Assuming header-faq is the element for TOC title\r\n\r\n\/\/ Sticky TOC and update heading\r\n\/\/ document.addEventListener(\"DOMContentLoaded\", function() {\r\n\/\/   const toc = document.querySelector('#toc');\r\n\/\/   const footer = document.querySelector('.td-footer-template-wrap');\r\n\/\/   const tocParent = toc.parentElement;\r\n\/\/   const divTop = tocParent.getBoundingClientRect().top + window.pageYOffset;\r\n\/\/   const tocHeight = toc.offsetHeight;\r\n\/\/   const triggerPoint = divTop + tocHeight + 700;\r\n\/\/   const footerHeight = footer.offsetHeight;\r\n\/\/   const triggerFooterPoint = footer.getBoundingClientRect().top + window.pageYOffset - footerHeight - footerHeight - footerHeight;\r\n\/\/   const phtoc = document.querySelector('#placeholder-toc');\r\n\/\/   const headers = document.querySelectorAll('.td-post-content h2');\r\n\/\/   const navLinks = document.querySelectorAll('#toc-list a');\r\n\t\r\n\/\/ \tconst panel2 = document.querySelector(\"#toc .list\");\r\n\/\/ \tvar icon = document.querySelector(\".toc-icon\");\r\n\r\n\/\/   let activeLink = null; \/\/ Declare activeLink outside the loop\r\n\t\r\n\/\/   \/\/ Function to handle scroll and add\/remove .sticky class\r\n\/\/   function handleScroll() {\r\n\/\/     const windowTop = window.pageYOffset || document.documentElement.scrollTop;\r\n\/\/     let currentHeader = '';\r\n\r\n\/\/     \/\/ Highlight user progress as the heading comes\r\n\/\/     headers.forEach(header => {\r\n\/\/ \t\tconst headerTop = header.offsetTop;\r\n\/\/ \t\tconst headerHeight = header.clientHeight;\r\n\/\/ \/\/ \t\tif (window.scrollY >= (headerTop - headerHeight + 700)) {\r\n\/\/ \/\/ \t\t\tconst currentHeaderId = header.getAttribute('id');\r\n\/\/ \/\/ \t\t\tconst currentHeaderText = document.getElementById(currentHeaderId).textContent;\r\n\/\/ \/\/ \t\t\tconsole.log(\"current header text:\", currentHeaderText);\r\n\/\/ \/\/ \t\t\ttocTitle.textContent = currentHeaderText;\r\n\/\/ \/\/ \t\t\tcurrentHeader = currentHeaderId;\r\n\t\t\t\r\n\/\/ \/\/ \t\t\tif(window.innerWidth < 767){\r\n\/\/ \/\/ \t\t\t\ttocTitle.textContent = 'Daftar Isi';\r\n\/\/ \/\/ \t\t\t}\r\n\/\/ \/\/ \t\t}\r\n\/\/ \t\tif(window.innerWidth < 767){\r\n\/\/ \t\t\ttocTitle.textContent = 'Daftar Isi'; \/\/ Selalu pertahankan judul ini di mobile\r\n\/\/ \t\t} else {\r\n\/\/ \t\t\tif (window.scrollY >= (headerTop - headerHeight + 700)) {\r\n\/\/ \t\t\t\tconst currentHeaderId = header.getAttribute('id');\r\n\/\/ \t\t\t\tconst currentHeaderText = document.getElementById(currentHeaderId).textContent;\r\n\/\/ \t\t\t\ttocTitle.textContent = currentHeaderText;\r\n\/\/ \t\t\t\tcurrentHeader = currentHeaderId;\r\n\/\/ \t\t\t}\r\n\/\/ \t\t}\r\n\/\/ \t});\r\n\r\n\/\/     navLinks.forEach(link => {\r\n\/\/       link.classList.remove('active');\r\n\/\/       if(currentHeader != '') {\r\n\/\/ \t\t  if (link.getAttribute('href').includes(currentHeader)) {\r\n\/\/ \t\t\t  link.classList.add('active');\r\n\/\/ \t\t  }\r\n\/\/ \t  }\r\n\/\/     });\r\n\/\/ \/\/     if (windowTop < triggerFooterPoint) {\r\n\/\/ \/\/         toc.style.display = 'block';\r\n\/\/ \/\/ \t}else{\r\n\/\/ \/\/         toc.style.display = 'none';\r\n\/\/ \/\/ \t}\r\n\/\/     \/\/ Update TOC title if sticky\r\n\/\/     if (windowTop > triggerPoint) {\r\n\/\/       if (!toc.classList.contains('sticky')) {\r\n\/\/         phtoc.style.display = \"block\";\r\n\/\/         toc.classList.add('sticky');\r\n\/\/         toc.style.width = `${tocParent.offsetWidth}px`; \/\/ Set width to match the parent element\r\n\/\/         toc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n\/\/         toc.style.backgroundColor = \"#FFF\";\r\n\/\/ \t\tpanel2.style.height = '0px';\r\n\/\/ \t\t  icon.style.transform = \"rotate(180deg)\";\r\n\/\/ \t\t  if(window.innerWidth < 767){\r\n\/\/ \/\/ \t\t\t  const tocs = document.querySelector('#toc.sticky');\r\n\/\/ \t\t\t  tocTitle.textContent = 'Daftar Isi'; \/\/ Reset title\r\n\/\/        \t\t  toc.style.width = '150px'; \/\/ Set width to match the parent element\r\n\/\/ \t\t  }\r\n\/\/       }\r\n\/\/       if (currentHeader) {\r\n\/\/ \/\/         console.log(\"activeLink:\", activeLink);\r\n\/\/         if (activeLink) {\r\n\/\/ \/\/           tocTitle.textContent = activeLink.textContent; \/\/ Update TOC title\r\n\/\/           tocTitle.textContent = activeLink ? activeLink.textContent : \"\"; \/\/ Update title only if activeLink exists\r\n\/\/         }\r\n\/\/       }\r\n\/\/     } else {\r\n\/\/       toc.classList.remove('sticky');\r\n\/\/       phtoc.style.display = \"none\";\r\n\/\/       toc.style.width = 'unset'; \/\/ Reset to original width\r\n\/\/       toc.style.backgroundColor = \"#FFF\";\r\n\/\/       tocTitle.textContent = 'Daftar isi'; \/\/ Reset title\r\n\/\/ \t\tpanel2.style.height = panel2.scrollHeight + \"px\";\r\n\/\/ \t\ticon.style.transform = \"rotate(180deg)\";\r\n\/\/     }\r\n\/\/   }\r\n\r\n\/\/     \/\/ Attach the scroll event listener to the window\r\n\/\/     window.addEventListener('scroll', handleScroll);\r\n\r\n\/\/     \/\/ Initial call to handleScroll to set the correct state on load\r\n\/\/     handleScroll();\r\n\/\/ });\r\n\t\r\n\/\/ \t\/\/ Open toggle TOC\r\n\/\/ \t  document.addEventListener(\"DOMContentLoaded\", function() {\r\n\/\/ \t\tvar tocHeader = document.querySelector(\"#toc .header\");\r\n\/\/ \t\tvar toc = document.querySelector(\"#toc\");\r\n\/\/ \t\tvar icon = document.querySelector(\".toc-icon\");\r\n\/\/ \t\tconst tocTitle = document.querySelector('#toc-title');\r\n\/\/ \t\tconst tocs = document.querySelector('#toc.sticky');\r\n\/\/  \t\tconst tocParent = toc.parentElement;\t\t  \r\n\r\n\/\/ \t\t  tocHeader.addEventListener(\"click\", function() {\r\n\/\/ \t\t\tvar panel = this.nextElementSibling;\r\n\/\/ \t\t\tif (panel.style.height !== '0px') { \/\/ Check if height is not 0px\r\n\/\/ \t\t\t  panel.style.height = '0px'; \/\/ Set height to 0 for full collapse\r\n\/\/ \t\t\t  icon.style.transform = \"rotate(180deg)\";\r\n\/\/ \/\/ \t\t\t\ttoc.style.paddingBottom = '6px'; \r\n\/\/ \t\t\t\tif(window.innerWidth > 768){\r\n\/\/ \t\t\t\t\tif(!toc.classList.contains('sticky')){\r\n\/\/ \t\t\t\t\t\ttoc.style.width = \"unset\";\r\n\/\/ \/\/ \t\t\t\t\t\ttoc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n\/\/ \t\t\t\t\t}\r\n\/\/ \t\t\t\t\tif (toc.classList.contains('sticky')){\r\n\/\/ \t\t\t\t\t\ttoc.style.width = '${tocParent.offsetWidth}px';\r\n\/\/ \t\t\t\t\t\ttoc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n\/\/ \t\t\t\t\t}\r\n\/\/ \t\t\t\t}\r\n\/\/ \t\t\t\tif(window.innerWidth < 767){\r\n\/\/ \t\t\t\t\ttoc.style.width = \"unset\"; \/\/ Reset width\r\n\/\/ \t\t\t\t}\r\n\/\/ \t\t\t\ttoc.style.backgroundColor = \"#FFF1F1\";\r\n\/\/ \t\t\t} else {\r\n\/\/ \t\t\t  panel.style.height = panel.scrollHeight + \"px\";\r\n\/\/ \t\t\t  icon.style.transform = \"rotate(0deg)\";\r\n\/\/ \t\t\t  toc.style.backgroundColor = \"#FFF\";\r\n\/\/ \t\t\t  tocTitle.textContent = 'Daftar isi'; \/\/ Reset title\r\n\/\/ \t\t\t\ttoc.style.paddingBottom = '24px';\r\n\/\/ \t\t\t \tif(window.innerWidth < 767){\r\n\/\/ \t\t\t\t\ttoc.style.width = `${tocParent.offsetWidth}px`; \/\/ Set width to match the parent element\r\n\/\/ \t\t\t\t\ttoc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n\/\/ \t\t\t\t}\r\n\/\/ \t\t\t}\r\n\/\/ \t\t  });\r\n\r\n\/\/ \t\t  \/\/ Close TOC when a link inside it is clicked\r\n\/\/ \t\t  var tocLinks = document.querySelectorAll(\"#toc .list a\");\r\n\/\/ \t\t  tocLinks.forEach(function(link) {\r\n\/\/ \t\t\tlink.addEventListener(\"click\", function() {\r\n\/\/ \t\t\t  var panel = document.querySelector(\"#toc .list\");\r\n\/\/ \t\t\t  panel.style.height = '0px'; \/\/ Set height to 0 for full collapse\r\n\/\/ \t\t\t  icon.style.transform = \"rotate(180deg)\";\r\n\/\/ \t\t\t  toc.style.backgroundColor = \"#FFF\";\r\n\/\/ \t\t\t});\r\n\/\/ \t\t  });\r\n\/\/ \t\t});\r\n\r\n\/\/ START new JS for ToC improvements\r\ndocument.addEventListener(\"DOMContentLoaded\", function() {\r\n  const toc = document.querySelector('#toc');\r\n  const footer = document.querySelector('.td-footer-template-wrap');\r\n  const tocParent = toc.parentElement;\r\n  const divTop = tocParent.getBoundingClientRect().top + window.pageYOffset;\r\n  const tocHeight = toc.offsetHeight;\r\n  const triggerPoint = divTop + tocHeight + 1750;\r\n\tconsole.log(triggerPoint)\r\n  const footerHeight = footer.offsetHeight;\r\n  const triggerFooterPoint = footer.getBoundingClientRect().top + window.pageYOffset - footerHeight*3;\r\n  const phtoc = document.querySelector('#placeholder-toc');\r\n  const headers = document.querySelectorAll('.td-post-content h2');\r\n  const navLinks = document.querySelectorAll('#toc-list a');\r\n  \r\n  const panel2 = document.querySelector(\"#toc .list\");\r\n  const icon = document.querySelector(\".toc-icon\");\r\n  const tocTitle = document.querySelector('#toc-title');\r\n\r\n  let activeLink = null;\r\n  let userClosedTOC = false; \/\/ Flag user menutup TOC\r\n\r\n  function handleScroll() {\r\n    const windowTop = window.pageYOffset || document.documentElement.scrollTop;\r\n    let currentHeader = '';\r\n\r\n    \/\/ Update TOC title sesuai header yang terlihat\r\n    headers.forEach(header => {\r\n      const headerTop = header.offsetTop;\r\n      const headerHeight = header.clientHeight;\r\n      if(window.innerWidth < 767){\r\n        tocTitle.textContent = 'Daftar Isi'; \r\n      } else {\r\n        if (window.scrollY >= (headerTop - headerHeight + 1750)) {\r\n          const currentHeaderId = header.getAttribute('id');\r\n          const currentHeaderText = document.getElementById(currentHeaderId).textContent;\r\n          tocTitle.textContent = currentHeaderText;\r\n          currentHeader = currentHeaderId;\r\n        }\r\n      }\r\n    });\r\n\r\n    navLinks.forEach(link => {\r\n      link.classList.remove('active');\r\n      if(currentHeader && link.getAttribute('href').includes(currentHeader)) {\r\n        link.classList.add('active');\r\n      }\r\n    });\r\n\r\n    if (windowTop > triggerPoint) {\r\n      if (!toc.classList.contains('sticky')) {\r\n        phtoc.style.display = \"block\";\r\n        toc.classList.add('sticky');\r\n        toc.style.width = `${tocParent.offsetWidth}px`;\r\n        toc.style.backgroundColor = \"#FFF\";\r\n        \/\/ Saat sticky, TOC otomatis tertutup\r\n        panel2.style.height = '0px';\r\n        icon.style.transform = \"rotate(180deg)\";\r\n        userClosedTOC = true; \/\/ Set flag supaya tidak terbuka saat scroll\r\n      }\r\n      \r\n      if(window.innerWidth < 767){\r\n        tocTitle.textContent = 'Daftar Isi'; \r\n        toc.style.width = '150px';\r\n      }\r\n\r\n    } else {\r\n      toc.classList.remove('sticky');\r\n      phtoc.style.display = \"none\";\r\n      toc.style.width = 'unset';\r\n      toc.style.backgroundColor = \"#FFF\";\r\n      tocTitle.textContent = 'Daftar isi'; \r\n\r\n      \/\/ Kembalikan panel jika user belum menutup manual\r\n      if(!userClosedTOC) {\r\n        panel2.style.height = panel2.scrollHeight + \"px\";\r\n        icon.style.transform = \"rotate(0deg)\";\r\n      }\r\n    }\r\n  }\r\n\r\n  window.addEventListener('scroll', handleScroll);\r\n  handleScroll();\r\n\r\n  \/\/ Toggle TOC saat user klik\r\n  const tocHeader = document.querySelector(\"#toc .header\");\r\n  tocHeader.addEventListener(\"click\", function() {\r\n    const panel = panel2;\r\n    if (panel.style.height !== '0px') {\r\n      panel.style.height = '0px';\r\n      icon.style.transform = \"rotate(180deg)\";\r\n      userClosedTOC = true;\r\n    } else {\r\n      panel.style.height = panel.scrollHeight + \"px\";\r\n      icon.style.transform = \"rotate(0deg)\";\r\n      userClosedTOC = false;\r\n    }\r\n  });\r\n\r\n  \/\/ Close TOC saat link diklik\r\n  document.querySelectorAll(\"#toc .list a\").forEach(link => {\r\n    link.addEventListener(\"click\", function() {\r\n      panel2.style.height = '0px';\r\n      icon.style.transform = \"rotate(180deg)\";\r\n      userClosedTOC = true;\r\n    });\r\n  });\r\n});\r\n\/\/ END new JS for ToC improvements\r\n\r\n\t\r\n\/\/ \tmake the heading at the center of the viewport\r\n\/\/ \tdocument.addEventListener('DOMContentLoaded', function() {\r\n\/\/     \/\/ Add click event listener to all links in the TOC list\r\n\/\/     document.querySelectorAll('#toc-list a').forEach(anchor => {\r\n\/\/         anchor.addEventListener('click', function (e) {\r\n\/\/             e.preventDefault(); \/\/ Prevent the default behavior of jumping to the anchor\r\n\/\/ \/\/ \t\t\tconsole.log(\"prevent default\");\r\n\/\/             const targetId = this.getAttribute('href').substring(1); \/\/ Get the ID of the target element\r\n\/\/             const targetElement = document.getElementById(targetId); \/\/ Get the target element\r\n\r\n\/\/             if (targetElement) {\r\n\/\/                 const headerHeight = document.querySelector('#toc .header').offsetHeight; \/\/ Get the height of the fixed header\r\n\/\/                 const windowHeight = window.innerHeight; \/\/ Get the height of the viewport\r\n\/\/                 const targetOffset = targetElement.offsetTop; \/\/ Get the top offset of the target element\r\n\/\/                 const scrollTo = targetOffset + (windowHeight \/ 2) + (headerHeight); \/\/ Calculate the scroll position to center the target element\r\n\r\n\/\/                 \/\/ Scroll to the calculated position smoothly\r\n\/\/                 window.scrollTo({\r\n\/\/                     top: scrollTo,\r\n\/\/                     behavior: 'smooth'\r\n\/\/                 });\r\n\/\/             }\r\n\/\/         });\r\n\/\/     });\r\n\/\/ });\r\n<\/script>\r\n\r\n<script>\r\n    \/\/ Scrollspy function to highlight the active TOC item based on the scroll position\r\n  function scrollSpy(tocClass) {\r\n    const scrollPosition = window.scrollY;\r\n\r\n    \/\/ Find the active h2 and h3 headings based on their position in the corresponding TOC\r\n    let activeH2 = null;\r\n    let activeH3 = null;\r\n\r\n    const tocItems = document.querySelectorAll(`.${tocClass} li`);\r\n    tocItems.forEach(item => {\r\n      const a = item.querySelector('a');\r\n      if (!a) return;\r\n      const href = a.getAttribute('href');\r\n      const targetId = href.substring(1); \/\/ Remove the '#' from the href to get the target ID\r\n      const targetElement = document.getElementById(targetId);\r\n      if (!targetElement) return;\r\n\r\n      const targetTop = targetElement.getBoundingClientRect().top + scrollPosition;\r\n      const nextItem = item.nextElementSibling;\r\n      const nextTop = nextItem ? nextItem.getBoundingClientRect().top + scrollPosition : Infinity;\r\n\r\n      if (targetTop <= scrollPosition + 150) {\r\n        if (a.parentElement.parentElement === tocItems) {\r\n          \/\/ The h2 heading is at the root level of the TOC\r\n          activeH2 = { id: targetId, level: 'h2' };\r\n        } \r\n\t\t  else {\r\n          \/\/ The h3 heading is nested under an h2 heading\r\n          const parentH2 = a.parentElement.parentElement.previousElementSibling;\r\n          if (parentH2) {\r\n            const h2Link = parentH2.querySelector('a');\r\n            if (h2Link) {\r\n              const h2Href = h2Link.getAttribute('href');\r\n              const h2Id = h2Href.substring(1);\r\n              activeH2 = { id: h2Id, level: 'h2' };\r\n            }\r\n          }\r\n          activeH3 = { id: targetId, level: 'h3' };\r\n        }\r\n      }\r\n\r\n      if (targetTop > scrollPosition + 150 && nextTop > scrollPosition + 150 && !activeH3) {\r\n        \/\/ Reset the activeH2 when there are no more active h3 headings\r\n        activeH2 = null;\r\n      }\r\n    });\r\n\r\n    \/\/ Update the active state for the TOC items\r\n    tocItems.forEach(item => {\r\n      item.classList.remove('active');\r\n      const a = item.querySelector('a');\r\n      if (a) {\r\n        const href = a.getAttribute('href');\r\n        const targetId = href.substring(1);\r\n        if ((activeH2 && activeH2.id === targetId) || (activeH3 && activeH3.id === targetId)) {\r\n          item.classList.add('active');\r\n        }\r\n      }\r\n    });\r\n  }\r\n\r\n  \/\/ Call scrollSpy for each TOC on window scroll\r\n  const tocClasses = ['list_toc', 'list_toc_float']; \/\/ Add other TOC class names here if you have more than two instances\r\n  tocClasses.forEach(tocClass => {\r\n    window.addEventListener('scroll', () => scrollSpy(tocClass));\r\n  });\r\n<\/script>\r\n\r\n<!-- ToC List for desktop side bar, diganti jadi inject by php, di code snippet \"Sidebar Accordion\" -->\r\n<!-- <script>\r\n\tdocument.addEventListener(\"DOMContentLoaded\", function() {\r\n\r\n        \/\/ Fungsi untuk membuat nested list\r\n        function createNestedList(parentNode, children) {\r\n            if (children.length === 0) return;\r\n\r\n            const nestedUl = document.createElement('ul');\r\n            children.forEach(child => {\r\n                const nestedLi = document.createElement('li');\r\n                const nestedA = document.createElement('a');\r\n                nestedA.textContent = child.title;\r\n                nestedA.href = `#${child.id}`;\r\n                nestedLi.appendChild(nestedA);\r\n                nestedUl.appendChild(nestedLi);\r\n\r\n                if (child.children.length > 0) {\r\n                    createNestedList(nestedLi, child.children);\r\n                }\r\n            });\r\n\r\n            parentNode.appendChild(nestedUl);\r\n        }\r\n\r\n        \/\/ Membuat objek untuk menyimpan daftar h2 dan h3 beserta judulnya\r\n        const headings = [];\r\n\r\n           \/\/ Mengambil semua elemen h2 dan h3\r\n        \/\/ Mengambil semua elemen h2 dan h3\r\n\t\tconst elements = document.querySelectorAll('.td-post-content h2');\r\n\r\n\t\t\tfunction newFormatId(text) {\r\n\t\t\t\tif(text.toLowerCase() === \"key takeaways\") {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tconst result = text.toLowerCase()\r\n\t\t\t\t.trim()\r\n\t\t\t\t.replace(\/[^\\w\\s-]\/g, '')  \/\/ hapus tanda baca\r\n\t\t\t\t.replace(\/\\s+\/g, '-'); \/\/ ganti spasi jadi \"-\"\r\n\r\n\t\t\t\treturn result;\r\n\t\t\t}\r\n\t\r\n\t\telements.forEach(element => {\r\n\t\t\tif (element.tagName === 'H2') {\r\n\t\t\t\tconst id = newFormatId(element.textContent); \/\/ Hasilkan ID baru\r\n\t\t\t\telement.id = id; \/\/ Tetapkan ID ke elemen h2\r\n\t\t\t\tif (element.textContent.toLowerCase() === \"key takeaways\") {return;} \/\/ Kalau Key Takeaways, jangan dimasukin\r\n\t\t\t\theadings.push({ level: 'h2', id: id, title: element.textContent, children: [] });\r\n\t\t\t} else if (element.tagName === 'H3') {\r\n\t\t\t\tconst id = newFormatId(element.textContent); \/\/ Hasilkan ID baru\r\n\t\t\t\telement.id = id; \/\/ Tetapkan ID ke elemen h3\r\n\t\t\t\tif (headings.length > 0) {\r\n\t\t\t\t\theadings[headings.length - 1].children.push({ level: 'h3', id: id, title: element.textContent, children: [] });\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n       \/\/ Membuat list HTML dari objek headings\r\n\t\tconst ul = document.getElementById('list_toc');\r\n\t\tlet currentUl = ul;\r\n\t\theadings.forEach(heading => {\r\n\t\t\tconst li = document.createElement('li');\r\n\t\t\tconst a = document.createElement('a');\r\n\t\t\ta.textContent = heading.title;\r\n\t\t\ta.href = `#${heading.id}`; \/\/ Gunakan ID yang baru dihasilkan\r\n\t\t\tli.appendChild(a);\r\n\r\n\t\t\tif (heading.level === 'h2') {\r\n\t\t\t\tcurrentUl = li;\r\n\t\t\t\tul.appendChild(li);\r\n\t\t\t} else if (heading.level === 'h3') {\r\n\t\t\t\tif (!currentUl.lastElementChild || currentUl.lastElementChild.tagName !== 'UL') {\r\n\t\t\t\t\tconst nestedUl = document.createElement('ul');\r\n\t\t\t\t\tcurrentUl.appendChild(nestedUl);\r\n\t\t\t\t\tcurrentUl = nestedUl;\r\n\t\t\t\t}\r\n\t\t\t\tcurrentUl.appendChild(li);\r\n\t\t\t}\r\n\r\n\t\t\tcreateNestedList(li, heading.children);\r\n\t\t});\r\n\t\t\/\/ Dapatkan elemen ul dengan id 'list_toc'\r\n\t\tconst ulFloat = document.getElementById('list_toc');\r\n\r\n\t\t\/\/ Dapatkan isi (child elements) dari ul dengan id 'list_toc'\r\n\t\tconst clonedChildren = ulFloat.cloneNode(true).children;\r\n\r\n\t\t\/\/ Dapatkan elemen ul dengan id 'list_toc_float'\r\n\t\tconst ulToc = document.getElementById('list_toc_float');\r\n\r\n\t\t\/\/ Tambahkan isi yang telah didapatkan dari 'list_toc' ke ul dengan id 'list_toc_float'\r\n\t\tulToc.append(...clonedChildren);\r\n\r\n\r\n        \/\/ Fungsi untuk mengambil tinggi navbar\r\n\t\tfunction getNavbarHeight() {\r\n\t\t\tconst navbar = document.getElementById('tdi_34');\r\n\t\t\treturn navbar ? navbar.offsetHeight : 0;\r\n\t\t}\r\n\r\n\t\t\/\/ Fungsi untuk menambahkan offset posisi scroll\r\n\t\tfunction scrollToElementWithOffset(elementId) {\r\n\t\t\tconst element = document.getElementById(elementId);\r\n\t\t\tif (element) {\r\n\t\t\t\tconst offset = getNavbarHeight();\r\n\t\t\t\tconst elementPosition = element.getBoundingClientRect().top;\r\n\t\t\t\tconst offsetPosition = elementPosition - offset - 40;\r\n\r\n\t\t\t\twindow.scrollBy({\r\n\t\t\t\t\ttop: offsetPosition,\r\n\t\t\t\t\tbehavior: 'smooth'\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t\/\/ Fungsi untuk menangani klik pada tautan judul\r\n\t\tfunction handleTitleClick(event) {\r\n\t\t\tevent.preventDefault();\r\n\t\t\tconst href = event.target.getAttribute('href').substr(1);\r\n\t\t\tscrollToElementWithOffset(href);\r\n\t\t}\r\n\r\n\t\t\/\/ Tambahkan event listener untuk semua tautan judul\r\n\t\tconst titleLinks = document.querySelectorAll('a[href^=\"#\"]');\r\n\t\ttitleLinks.forEach(link => {\r\n\t\t\tlink.addEventListener('click', handleTitleClick);\r\n\t\t});\r\n\t\t\r\n\t});\r\n    <\/script> -->\r\n<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2><b><span id=\"a\">Apa Itu Laporan Stock Opname?<\/span><\/b><\/h2>\n<p>Laporan stock opname adalah dokumen resmi yang mencatat hasil penghitungan fisik seluruh persediaan barang di gudang pada periode tertentu. Laporan ini membandingkan jumlah stok aktual yang ditemukan di lapangan dengan data stok yang tersimpan di sistem atau buku besar perusahaan.<\/p>\n<p>Stock opname adalah proses &#8220;cek ulang&#8221; kondisi nyata gudang. Hasilnya dituangkan dalam sebuah laporan yang setidaknya memuat elemen berikut:<\/p>\n<ul>\n<li aria-level=\"1\">Nama dan kode setiap item barang (SKU)<\/li>\n<li aria-level=\"1\">Jumlah stok menurut sistem (book stock)<\/li>\n<li aria-level=\"1\">Jumlah stok hasil hitungan fisik (physical stock)<\/li>\n<li aria-level=\"1\">Selisih antara keduanya (variance\/discrepancy)<\/li>\n<li aria-level=\"1\">Keterangan penyebab selisih, jika ada<\/li>\n<\/ul>\n<p>Laporan ini menjadi bukti tertulis kondisi inventaris perusahaan dan dasar pengambilan keputusan untuk penyesuaian stok, audit internal, maupun pelaporan keuangan akhir periode.<\/p>\n<h2><b>Mengapa Perusahaan Membuat Laporan Stock Opname dengan Excel?<\/b><\/h2>\n<p>Banyak perusahaan, terutama yang baru berkembang atau masih berada di skala menengah, memilih Microsoft Excel sebagai alat utama pencatatan stock opname. Ada lima alasan praktis yang mendorong pilihan ini:<\/p>\n<h3><b>1. Tidak Butuh Biaya Tambahan<\/b><\/h3>\n<p>Excel sudah tersedia di hampir semua komputer kantor sebagai bagian dari paket Microsoft Office yang sudah dibeli perusahaan. Tidak ada lisensi tambahan yang perlu dikeluarkan.<\/p>\n<h3><b>2. Format Fleksibel dan Bisa Dikustomisasi<\/b><\/h3>\n<p>Tim gudang bisa menyesuaikan kolom, warna, dan tampilan tabel sesuai kebutuhan spesifik perusahaan tanpa perlu keahlian teknis atau bantuan developer.<\/p>\n<h3><b>3. Formula Otomatis Mempercepat Kalkulasi<\/b><\/h3>\n<p>Rumus seperti SUM, VLOOKUP, IF, hingga COUNTIF memudahkan penghitungan selisih stok secara otomatis. Tim cukup input data fisik, selisih langsung muncul tanpa hitung manual.<\/p>\n<h3><b>4. Mudah Dibagikan dan Diarsipkan<\/b><\/h3>\n<p>File Excel bisa dikirim via email, disimpan di Google Drive atau OneDrive, dan dilampirkan langsung ke laporan keuangan. Proses dokumentasi menjadi lebih simpel.<\/p>\n<h3><b>5. Familiaritas Tim yang Tinggi<\/b><\/h3>\n<p>Sebagian besar staf akuntansi dan logistik sudah terbiasa menggunakan Excel. Kurva belajarnya sangat rendah sehingga tidak perlu waktu pelatihan panjang.<\/p>\n<h2><b><span id=\"b\">Cara Membuat Laporan Stock Opname Excel<\/span><\/b><\/h2>\n<div style=\"font-family: 'Plus Jakarta Sans',Arial,sans-serif; max-width: 760px; margin: 0 auto; color: #1a202c; border-radius: 12px; overflow: hidden; box-shadow: 0 4px 24px rgba(0,0,0,0.08);\">\n<p><!-- Header --><\/p>\n<p><!-- FASE 1 Header --><\/p>\n<div style=\"background: #e0f2fe; border-left: 4px solid #0284c7; padding: 10px 20px; display: flex; align-items: center; gap: 10px;\"><span style=\"background: #0284c7; color: #fff; font-size: 10px; font-weight: bold; padding: 3px 10px; border-radius: 999px; letter-spacing: 1px; white-space: nowrap;\">FASE 1<br \/>\n<\/span><br \/>\n<span style=\"font-weight: bold; color: #0c4a6e; font-size: 13px;\"><br \/>\nPERSIAPAN \u2014 Sebelum Buka Excel<br \/>\n<\/span><\/div>\n<p><!-- Prep 3 cards --><\/p>\n<div style=\"display: flex; gap: 12px; padding: 16px 16px 20px; background: #f0f9ff; flex-wrap: wrap;\">\n<div style=\"flex: 1; min-width: 180px; background: #fff; border: 1px solid #bae6fd; border-top: 3px solid #0284c7; border-radius: 8px; padding: 16px;\">\n<div style=\"display: flex; align-items: center; gap: 10px; margin-bottom: 8px;\">\n<div style=\"width: 30px; height: 30px; background: #0284c7; border-radius: 50%; display: flex; align-items: center; justify-content: center; color: #fff; font-weight: bold; font-size: 13px; flex-shrink: 0;\">1<\/div>\n<div style=\"font-weight: bold; font-size: 13px;\">Freeze Transaksi<\/div>\n<\/div>\n<div style=\"font-size: 12px; color: #475569; line-height: 1.6;\">Stop seluruh aktivitas penerimaan &amp; pengeluaran barang selama penghitungan berlangsung.<\/div>\n<\/div>\n<div style=\"flex: 1; min-width: 180px; background: #fff; border: 1px solid #bae6fd; border-top: 3px solid #0284c7; border-radius: 8px; padding: 16px;\">\n<div style=\"display: flex; align-items: center; gap: 10px; margin-bottom: 8px;\">\n<div style=\"width: 30px; height: 30px; background: #0284c7; border-radius: 50%; display: flex; align-items: center; justify-content: center; color: #fff; font-weight: bold; font-size: 13px; flex-shrink: 0;\">2<\/div>\n<div style=\"font-weight: bold; font-size: 13px;\">Blind Count (2 Orang)<\/div>\n<\/div>\n<div style=\"font-size: 12px; color: #475569; line-height: 1.6;\">Jangan lihat data sistem sebelum penghitungan fisik selesai. Satu hitung, satu catat.<\/div>\n<\/div>\n<div style=\"flex: 1; min-width: 180px; background: #fff; border: 1px solid #bae6fd; border-top: 3px solid #0284c7; border-radius: 8px; padding: 16px;\">\n<div style=\"display: flex; align-items: center; gap: 10px; margin-bottom: 8px;\">\n<div style=\"width: 30px; height: 30px; background: #0284c7; border-radius: 50%; display: flex; align-items: center; justify-content: center; color: #fff; font-weight: bold; font-size: 13px; flex-shrink: 0;\">3<\/div>\n<div style=\"font-weight: bold; font-size: 13px;\">Form Fisik Kosong<\/div>\n<\/div>\n<div style=\"font-size: 12px; color: #475569; line-height: 1.6;\">Form lapangan hanya berisi Kode, Nama, Satuan, Jumlah Fisik. Kolom stok sistem dikosongkan.<\/div>\n<\/div>\n<\/div>\n<p><!-- FASE 2 Header --><\/p>\n<div style=\"background: #eff6ff; border-left: 4px solid #2a5ea2; padding: 10px 20px; display: flex; align-items: center; gap: 10px;\"><span style=\"background: #2a5ea2; color: #fff; font-size: 10px; font-weight: bold; padding: 3px 10px; border-radius: 999px; letter-spacing: 1px; white-space: nowrap;\">FASE 2<br \/>\n<\/span><br \/>\n<span style=\"font-weight: bold; color: #1e3a8a; font-size: 13px;\"><br \/>\nLANGKAH WAJIB \u2014 Di Excel<br \/>\n<\/span><br \/>\n<span style=\"background: #dbeafe; color: #1e40af; font-size: 10px; font-weight: bold; padding: 2px 9px; border-radius: 999px; margin-left: auto; white-space: nowrap;\">7 langkah<br \/>\n<\/span><\/div>\n<p><!-- Steps 4\u201310 --><\/p>\n<div style=\"background: #f8fafc; padding: 20px 20px 12px;\">\n<p><!-- Step 4 --><\/p>\n<div style=\"display: flex; gap: 14px; margin-bottom: 18px;\">\n<div style=\"display: flex; flex-direction: column; align-items: center; flex-shrink: 0;\">\n<div style=\"width: 34px; height: 34px; background: #2a5ea2; border-radius: 50%; display: flex; align-items: center; justify-content: center; color: #fff; font-weight: bold; font-size: 13px;\">4<\/div>\n<div style=\"width: 2px; background: #cbd5e1; flex: 1; min-height: 16px; margin-top: 3px;\"><\/div>\n<\/div>\n<div style=\"flex: 1; padding-bottom: 6px;\">\n<div style=\"font-weight: bold; font-size: 13px; margin-bottom: 5px;\">Buat Header Tabel &amp; Freeze Row<\/div>\n<div style=\"display: flex; flex-wrap: wrap; gap: 4px;\"><span style=\"background: #e0e7ff; color: #3730a3; font-size: 10px; padding: 2px 7px; border-radius: 4px; font-weight: 600;\">No<br \/>\n<\/span><br \/>\n<span style=\"background: #e0e7ff; color: #3730a3; font-size: 10px; padding: 2px 7px; border-radius: 4px; font-weight: 600;\">Kode SKU<br \/>\n<\/span><br \/>\n<span style=\"background: #e0e7ff; color: #3730a3; font-size: 10px; padding: 2px 7px; border-radius: 4px; font-weight: 600;\">Nama Barang<br \/>\n<\/span><br \/>\n<span style=\"background: #e0e7ff; color: #3730a3; font-size: 10px; padding: 2px 7px; border-radius: 4px; font-weight: 600;\">Satuan<br \/>\n<\/span><br \/>\n<span style=\"background: #dbeafe; color: #1e40af; font-size: 10px; padding: 2px 7px; border-radius: 4px; font-weight: 600;\">Stok Sistem<br \/>\n<\/span><br \/>\n<span style=\"background: #dcfce7; color: #166534; font-size: 10px; padding: 2px 7px; border-radius: 4px; font-weight: 600;\">Stok Fisik<br \/>\n<\/span><br \/>\n<span style=\"background: #fef9c3; color: #854d0e; font-size: 10px; padding: 2px 7px; border-radius: 4px; font-weight: 600;\">Selisih<br \/>\n<\/span><br \/>\n<span style=\"background: #fef9c3; color: #854d0e; font-size: 10px; padding: 2px 7px; border-radius: 4px; font-weight: 600;\">Status<br \/>\n<\/span><br \/>\n<span style=\"background: #f1f5f9; color: #475569; font-size: 10px; padding: 2px 7px; border-radius: 4px; font-weight: 600;\">Keterangan<br \/>\n<\/span><\/div>\n<\/div>\n<\/div>\n<p><!-- Step 5 --><\/p>\n<div style=\"display: flex; gap: 14px; margin-bottom: 18px;\">\n<div style=\"display: flex; flex-direction: column; align-items: center; flex-shrink: 0;\">\n<div style=\"width: 34px; height: 34px; background: #2a5ea2; border-radius: 50%; display: flex; align-items: center; justify-content: center; color: #fff; font-weight: bold; font-size: 13px;\">5<\/div>\n<div style=\"width: 2px; background: #cbd5e1; flex: 1; min-height: 16px; margin-top: 3px;\"><\/div>\n<\/div>\n<div style=\"flex: 1; padding-bottom: 6px;\">\n<div style=\"font-weight: bold; font-size: 13px; margin-bottom: 5px;\">Input Data Stok<\/div>\n<div style=\"font-size: 12px; color: #475569; line-height: 1.6;\">Isi <strong style=\"color: #1e40af;\">Stok Sistem <\/strong>dari pencatatan, lalu isi <strong style=\"color: #166534;\">Stok Fisik <\/strong>setelah tim selesai menghitung di gudang.<\/div>\n<\/div>\n<\/div>\n<p><!-- Step 6 --><\/p>\n<div style=\"display: flex; gap: 14px; margin-bottom: 18px;\">\n<div style=\"display: flex; flex-direction: column; align-items: center; flex-shrink: 0;\">\n<div style=\"width: 34px; height: 34px; background: #2a5ea2; border-radius: 50%; display: flex; align-items: center; justify-content: center; color: #fff; font-weight: bold; font-size: 13px;\">6<\/div>\n<div style=\"width: 2px; background: #cbd5e1; flex: 1; min-height: 16px; margin-top: 3px;\"><\/div>\n<\/div>\n<div style=\"flex: 1; padding-bottom: 6px;\">\n<div style=\"font-weight: bold; font-size: 13px; margin-bottom: 6px;\">Formula Selisih (Kolom G)<\/div>\n<div style=\"background: #1e293b; border-radius: 6px; padding: 9px 13px; font-family: 'Courier New',monospace; font-size: 12.5px; color: #7dd3fc; margin-bottom: 8px;\">=IFERROR(F2-E2, &#8220;-&#8220;)<\/div>\n<div style=\"display: flex; gap: 8px; flex-wrap: wrap;\"><span style=\"background: #fee2e2; color: #991b1b; font-size: 11px; font-weight: bold; padding: 2px 8px; border-radius: 4px;\">Negatif = Kurang<br \/>\n<\/span><br \/>\n<span style=\"background: #dcfce7; color: #166534; font-size: 11px; font-weight: bold; padding: 2px 8px; border-radius: 4px;\">Positif = Surplus<br \/>\n<\/span><br \/>\n<span style=\"background: #f1f5f9; color: #475569; font-size: 11px; padding: 2px 8px; border-radius: 4px;\">IFERROR cegah error baris kosong<br \/>\n<\/span><\/div>\n<\/div>\n<\/div>\n<p><!-- Step 7 --><\/p>\n<div style=\"display: flex; gap: 14px; margin-bottom: 18px;\">\n<div style=\"display: flex; flex-direction: column; align-items: center; flex-shrink: 0;\">\n<div style=\"width: 34px; height: 34px; background: #2a5ea2; border-radius: 50%; display: flex; align-items: center; justify-content: center; color: #fff; font-weight: bold; font-size: 13px;\">7<\/div>\n<div style=\"width: 2px; background: #cbd5e1; flex: 1; min-height: 16px; margin-top: 3px;\"><\/div>\n<\/div>\n<div style=\"flex: 1; padding-bottom: 6px;\">\n<div style=\"font-weight: bold; font-size: 13px; margin-bottom: 6px;\">Formula Status Otomatis (Kolom H)<\/div>\n<div style=\"background: #1e293b; border-radius: 6px; padding: 9px 13px; font-family: 'Courier New',monospace; font-size: 12px; color: #7dd3fc; margin-bottom: 8px;\">=IF(G2=0,&#8221;OK&#8221;,IF(G2&gt;0,&#8221;Surplus&#8221;,&#8221;Kurang&#8221;))<\/div>\n<\/div>\n<\/div>\n<p><!-- Step 8 --><\/p>\n<div style=\"display: flex; gap: 14px; margin-bottom: 18px;\">\n<div style=\"display: flex; flex-direction: column; align-items: center; flex-shrink: 0;\">\n<div style=\"width: 34px; height: 34px; background: #2a5ea2; border-radius: 50%; display: flex; align-items: center; justify-content: center; color: #fff; font-weight: bold; font-size: 13px;\">8<\/div>\n<div style=\"width: 2px; background: #cbd5e1; flex: 1; min-height: 16px; margin-top: 3px;\"><\/div>\n<\/div>\n<div style=\"flex: 1; padding-bottom: 6px;\">\n<div style=\"font-weight: bold; font-size: 13px; margin-bottom: 8px;\">Conditional Formatting pada Kolom Selisih<\/div>\n<div>Nilai &lt; 0 \u2192 latar merah muda (Kurang)<br \/>\nNilai &gt; 0 \u2192 latar hijau muda (Surplus)<br \/>\nNilai = 0 \u2192 latar abu-abu (OK)<\/div>\n<\/div>\n<\/div>\n<p><!-- Step 9 --><\/p>\n<div style=\"display: flex; gap: 14px; margin-bottom: 18px;\">\n<div style=\"display: flex; flex-direction: column; align-items: center; flex-shrink: 0;\">\n<div style=\"width: 34px; height: 34px; background: #2a5ea2; border-radius: 50%; display: flex; align-items: center; justify-content: center; color: #fff; font-weight: bold; font-size: 13px;\">9<\/div>\n<div style=\"width: 2px; background: #cbd5e1; flex: 1; min-height: 16px; margin-top: 3px;\"><\/div>\n<\/div>\n<div style=\"flex: 1; padding-bottom: 6px;\">\n<div style=\"font-weight: bold; font-size: 13px; margin-bottom: 6px;\">Baris Ringkasan di Bawah Tabel<\/div>\n<div style=\"background: #1e293b; border-radius: 6px; padding: 9px 13px; font-family: 'Courier New',monospace; font-size: 11.5px; color: #7dd3fc; line-height: 2;\">\n<p>Total Kurang \u00a0\u2192 =SUMIF(H:H,&#8221;Kurang&#8221;,G:G)<\/p>\n<p>Total Surplus \u2192 =SUMIF(H:H,&#8221;Surplus&#8221;,G:G)<\/p>\n<p>Item Masalah \u00a0\u2192 =COUNTIF(H:H,&#8221;&lt;&gt;OK&#8221;)<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!-- Step 10 --><\/p>\n<div style=\"display: flex; gap: 14px; margin-bottom: 4px;\">\n<div style=\"display: flex; flex-direction: column; align-items: center; flex-shrink: 0;\">\n<div style=\"width: 34px; height: 34px; background: #2a5ea2; border-radius: 50%; display: flex; align-items: center; justify-content: center; color: #fff; font-weight: bold; font-size: 13px;\">10<\/div>\n<\/div>\n<div style=\"flex: 1;\">\n<div style=\"font-weight: bold; font-size: 13px; margin-bottom: 6px;\">Simpan dengan Nama Standar<\/div>\n<div style=\"background: #f1f5f9; border: 1px dashed #94a3b8; border-radius: 6px; padding: 9px 13px; font-family: 'Courier New',monospace; font-size: 12px; color: #334155;\">StockOpname_[NamaGudang]_[YYYY-MM-DD].xlsx<\/div>\n<div style=\"font-size: 11.5px; color: #64748b; margin-top: 6px;\">Simpan salinan di cloud storage (Google Drive \/ OneDrive) sebagai backup.<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p>&nbsp;<\/p>\n<div style=\"background: #f5f3ff; border-left: 4px solid #7c3aed; padding: 10px 20px; display: flex; align-items: center; gap: 10px;\"><span style=\"background: #7c3aed; color: #fff; font-size: 10px; font-weight: bold; padding: 3px 10px; border-radius: 999px; letter-spacing: 1px; white-space: nowrap;\">OPSIONAL<br \/>\n<\/span><br \/>\n<span style=\"font-weight: bold; color: #4c1d95; font-size: 13px;\"><br \/>\nUntuk Analisis Lanjutan<br \/>\n<\/span><\/div>\n<p><!-- Optional 2 cards --><\/p>\n<div style=\"display: flex; gap: 12px; padding: 16px 16px 20px; background: #faf5ff; flex-wrap: wrap;\">\n<div style=\"flex: 1; min-width: 200px; background: #fff; border: 1px solid #e9d5ff; border-top: 3px solid #7c3aed; border-radius: 8px; padding: 16px;\">\n<div style=\"font-size: 10px; font-weight: bold; color: #7c3aed; letter-spacing: 1px; text-transform: uppercase; margin-bottom: 5px;\">Langkah 11<\/div>\n<div style=\"font-weight: bold; font-size: 13px; margin-bottom: 6px;\">Pivot Table<\/div>\n<div style=\"font-size: 12px; color: #475569; line-height: 1.6;\">Ringkasan selisih per kategori atau lokasi rak. Cocok untuk 50+ SKU.<\/div>\n<\/div>\n<div style=\"flex: 1; min-width: 200px; background: #fff; border: 1px solid #e9d5ff; border-top: 3px solid #7c3aed; border-radius: 8px; padding: 16px;\">\n<div style=\"font-size: 10px; font-weight: bold; color: #7c3aed; letter-spacing: 1px; text-transform: uppercase; margin-bottom: 5px;\">Langkah 12<\/div>\n<div style=\"font-weight: bold; font-size: 13px; margin-bottom: 6px;\">Grafik Bar<\/div>\n<div style=\"font-size: 12px; color: #475569; line-height: 1.6;\">Visualisasi Stok Sistem vs. Stok Fisik per kategori untuk presentasi manajemen.<\/div>\n<\/div>\n<\/div>\n<p><!-- Footer --><\/p>\n<\/div>\n<h3><b>Tahap Persiapan (Sebelum Buka Excel)<\/b><\/h3>\n<h4><b>1. Freeze semua transaksi gudang<\/b><\/h4>\n<p>Hentikan sementara seluruh aktivitas penerimaan, pengeluaran, dan transfer barang. Jika ada transaksi masuk di tengah opname, stok sistem dan stok fisik tidak bisa dibandingkan secara apple-to-apple.<\/p>\n<h4><b>2. Bentuk tim dua orang, terapkan blind count<\/b><\/h4>\n<p>Satu orang menghitung, satu orang mencatat, dan keduanya tidak boleh melihat data stok sistem terlebih dahulu. Ini mencegah penghitung &#8220;mengikuti&#8221; angka sistem saat ragu.<\/p>\n<h4><b>3. Cetak form penghitungan fisik kosong<\/b><\/h4>\n<p>Kolom stok sistem tidak boleh ada di form lapangan. Ia harus diisi setelah penghitungan selesai.<\/p>\n<h3><b><span id=\"d\">Langkah Wajib: Membuat Template di Excel<\/span><\/b><\/h3>\n<h4><b>4. Buat header tabel\u00a0<\/b><\/h4>\n<p>Kolom: No | Kode SKU | Nama Barang | Satuan | Stok Sistem | Stok Fisik | Selisih | Status | Keterangan. Freeze baris pertama agar header tidak hilang saat scroll.<\/p>\n<h4><b>5. Input stok sistem &amp; hasil hitungan fisik\u00a0<\/b><\/h4>\n<p>Data stok sistem diambil dari pencatatan, stok fisik diisi setelah tim gudang selesai menghitung. (Simulasi 6 SKU toko material ada di file HTML di atas)<\/p>\n<h4><b>6. Hitung selisih dengan IFERROR:<\/b><\/h4>\n<p>=IFERROR(F2-E2, &#8220;Error Input&#8221;)<\/p>\n<p>Negatif = stok kurang dari sistem. Positif = surplus. IFERROR mencegah baris kosong memunculkan #VALUE!.<\/p>\n<h4><b>7. Kolom Status otomatis:<\/b><\/h4>\n<p>=IF(G2=0,&#8221;OK&#8221;,IF(G2&gt;0,&#8221;Surplus&#8221;,&#8221;Kurang&#8221;))<\/p>\n<ol start=\"8\">\n<li>Conditional Formatting \u2014 merah = kurang, hijau = surplus, abu-abu = OK.<\/li>\n<\/ol>\n<h4><b>9. Baris ringkasan di bawah tabel:<\/b><\/h4>\n<p>Total Selisih Kurang\u00a0 : =SUMIF(H2:H7,&#8221;Kurang&#8221;,G2:G7)<\/p>\n<p>Total Selisih Surplus : =SUMIF(H2:H7,&#8221;Surplus&#8221;,G2:G7)<\/p>\n<p>Item Bermasalah \u00a0 \u00a0 \u00a0 : =COUNTIF(H2:H7,&#8221;&lt;&gt;OK&#8221;)<\/p>\n<h4><b>10. Simpan dengan format:<\/b><\/h4>\n<p>StockOpname_[NamaGudang]_[YYYY-MM-DD].xlsx<\/p>\n<h2><b>Download Template Laporan Stock Opname Excel Gratis<\/b><\/h2>\n<p>Template stock opname Excel di bawah ini gratis dan bisa langsung dipakai oleh toko tanpa perlu setting tambahan. File terdiri dari tiga sheet: lembar penghitungan utama dengan 50 baris siap isi, kolom Selisih dan Status yang terisi otomatis via formula, serta sheet Ringkasan yang merekap jumlah item OK, Kurang, dan Surplus secara real-time.<\/p>\n<p>Staf toko cukup mengisi kolom Kode Barang, Nama Barang, Stok Sistem, dan Stok Fisik. Hasilnya langsung muncul tanpa perlu rumus manual. Template ini cocok untuk toko retail, minimarket, dan toko bahan bangunan dengan inventaris hingga 500 SKU.<\/p>\n<!-- shortcode CTA download new -->\r\n\r\n<div class=\"download-wrapper new\">\r\n\t<p class=\"download-desc\">Laporan Stock Opname Excel<\/p>\r\n\t\r\n\t<div class=\"download-top\" style=\"position: relative;\">\r\n\t\t<div class=\"opacity-ef\"><\/div>\r\n\t\t<img decoding=\"async\" class=\"download-img\" src=\"\">\r\n\t<\/div>\r\n\t\r\n\t<div class=\"button-wrapper\">\r\n\t\t\r\n  \t\t\t\t<button \r\n\t\t\tclass=\"downloadBtn\" \r\n\t\t\tpopup-content=\"template\" \r\n\t\t\tdata-link=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/05\/template-stock-opname-excel-1.xlsx\"\r\n\t\t\tdata-format=\"excel\">\r\n\t\t\t<div class=\"icon-unduh\"><\/div>\r\n\t\t\t<p class=\"download-text\" style=\"\">Download Sekarang<\/p>\r\n\t\t<\/button>\r\n\t\t\r\n  \t\t\t<\/div>\r\n\t\r\n\t<\/div>\r\n\r\n<style>\r\n\t.download-wrapper .download-bottom {\r\n\t\tdisplay: none;\r\n\t}\r\n<\/style>\r\n\r\n<style>\r\n\t.button-wrapper{\r\n\t\tdisplay: flex;\r\n\t\talign-items: center;\r\n\t\tjustify-content: center;\r\n\t}\r\n\t\r\n\t.new p.download-text{\r\n\t\tmargin-bottom: 0;\r\n\t\tcolor: #9C171E;\r\n\t}\r\n\t\r\n\t.color-me-white{\r\n\t\tcolor: #FFF !important;\r\n\t}\r\n\t.download-bottom, .download-top{\r\n\t\tmargin-top: 32px;\r\n\t\theight: 250px;\r\n\t\toverflow: hidden;\r\n\t\tborder-radius: 8px 8px 0 0;\r\n\t}\r\n\t\r\n\t.download-top{\r\n\t\tdisplay: none;\r\n\t}\r\n\t\r\n\t.download-img{\r\n\t\twidth: 100%;\r\n\/* \t\tfilter: blur(1px); *\/\r\n\t}\r\n\r\n\t.opacity-ef{\r\n\t\tposition: absolute;\r\n\t\tdisplay: block;\r\n\t\ttop: 0;\r\n\t\tleft: 0;\r\n\t\tbottom: 0;\r\n\t\tbackground-image: linear-gradient(180deg, rgba(255, 255, 255, 0.00) 35%, #FFF 88%);\r\n\t\tbackdrop-filter: blur(1px);\r\n\t\tz-index: 1;\r\n\t\twidth: 100%;\r\n\t}\r\n\t\r\n\t.download-wrapper.new{\r\n\t\tbackground: unset;\r\n\t\tpadding: 40px 16px;\r\n\t\tborder-radius: unset;\r\n\t\tborder-bottom: 2px solid #D9D9D9;\r\n\t\tborder-top: 2px solid #D9D9D9;\r\n\t}\r\n\t\r\n\t.icon-unduh{\r\n\t\tbackground-image: url('https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/11\/icon-unduh.webp');\r\n\t\tbackground-size: cover;\r\n\t\tbackground-repeat: no-repeat;\r\n\t\tbackground-position: center;\r\n\t}\r\n\t\r\n\t.new .downloadBtn{\r\n\t\twidth: 200px;\r\n\t\tpadding: 10px 14px;\r\n\t\tmargin-right: 16px;\r\n\t\tcolor: #FFF !important;\r\n\t\tbox-shadow: 5px 6px 16px 0px rgba(0, 0, 0, 0.25);\r\n\t\tjustify-content: center;\r\n\t}\r\n\t\r\n\t.new .downloadBtn:last-child{\r\n\t\tmargin-right: 0;\r\n\t}\r\n\t\r\n\t.new .download-desc{\r\n\t\tcolor: #282828 !important;\r\n\t\ttext-align: center;\r\n\t\tfont-size: 27px !important;\r\n\t\tfont-style: normal;\r\n\t\tfont-weight: 700;\r\n\t\tline-height: 28px;\r\n\t\tmargin-bottom: 24px !important;\r\n\t}\r\n\t\r\n\t.btn-pdf{\r\n\t\tborder: 2px solid #D01517;\r\n\t\tbackground: #D01517;\r\n\t}\r\n\t\r\n\t.btn-word{\r\n\t\tborder: 2px solid #25589A;\r\n\t\tbackground: #25589A;\r\n\t}\r\n\t\r\n\t.btn-excel{\r\n\t\tborder: 2px solid #20744A;\r\n\t\tbackground: #20744A;\r\n\t}\r\n\t\r\n\t.d-none{\r\n\t\tdisplay: none;\r\n\t}\r\n\t\r\n\t@media (min-width:992px) and (max-width:1399px){\r\n\t\tp.download-text{\r\n\t\t\tfont-size: 14px;\r\n\t\t}\r\n\t}\r\n\t\r\n\t@media (max-width:991px){\r\n\t\t.button-wrapper{\r\n\t\t\tdisplay: block;\r\n\t\t}\r\n\t\t\r\n\t\t.new .downloadBtn{\r\n\t\t\twidth: 100%;\r\n\t\t\tmargin-left: 0;\r\n\t\t\tmargin-right: 0;\r\n\t\t\tmargin-bottom: 16px;\r\n\t\t}\r\n\t\t\r\n\t\t.download-bottom{\r\n\t\t\tdisplay: none;\r\n\t\t}\r\n\t\t\r\n\t\t.download-top{\r\n\t\t\tdisplay: block;\r\n\t\t\tmargin-bottom: 16px;\r\n\t\t}\r\n\t\t\r\n\t\t.new .download-desc{\r\n\t\t\tmargin-bottom: 16px !important;\r\n\t\t}\r\n\t}\r\n\t\r\n\t@media (max-width:576px){\r\n\t\t.download-top{\r\n\t\t\theight: 120px;\r\n\t\t}\r\n\t}\r\n<\/style>\r\n\r\n<script>\r\n\tdocument.querySelectorAll('.downloadBtn').forEach(button=>{\r\n\t\tconst formatData = button.getAttribute('data-format');\r\n\t\tconst btnText = button.querySelector('.download-text');\r\n\t\tconst linkData = button.getAttribute('data-link');\r\n\t\tconst iconUnduh = button.querySelector('.icon-unduh');\r\n\t\tconst popupContent = button.getAttribute('popup-content');\r\n\t\t\r\n\t\tif(formatData == 'pdf'){\r\n\t\t\tbutton.classList.add('btn-pdf'); \r\n\t\t\tbtnText.classList.add('color-me-white');\r\n\t\t\tbtnText.innerHTML = \"Download PDF\";\r\n\t\t\ticonUnduh.style.backgroundImage = \"url('https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/12\/teenyicons_pdf-solid.webp')\"\r\n\t\t}\r\n\t\tif(formatData == 'word'){\r\n\t\t\tbutton.classList.add('btn-word'); \r\n\t\t\tbtnText.classList.add('color-me-white');\r\n\t\t\tbtnText.innerHTML = \"Download Word\";\r\n\t\t\ticonUnduh.style.backgroundImage = \"url('https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/12\/file-icons_microsoft-word.webp')\"\r\n\t\t}\r\n\t\tif(formatData == 'excel'){\r\n\t\t\tbutton.classList.add('btn-excel'); \r\n\t\t\tbtnText.classList.add('color-me-white');\r\n\t\t\tbtnText.innerHTML = \"Download Excel\";\r\n\t\t\ticonUnduh.style.backgroundImage = \"url('https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/12\/vscode-icons_file-type-excel2.webp')\"\r\n\t\t}\r\n\t\tif(formatData == 'docs'){\r\n\t\t\tbutton.classList.add('btn-word'); \r\n\t\t\tbtnText.classList.add('color-me-white');\r\n\t\t\tbtnText.innerHTML = \"Download Docs\";\r\n\t\t\ticonUnduh.style.backgroundImage = \"url('https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/12\/simple-icons_googledocs.webp')\"\r\n\t\t}\r\n\t\tif(formatData == 'sheet'){\r\n\t\t\tbutton.classList.add('btn-excel'); \r\n\t\t\tbtnText.classList.add('color-me-white');\r\n\t\t\tbtnText.innerHTML = \"Download Sheet\";\r\n\t\t\ticonUnduh.style.backgroundImage = \"url('https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/12\/simple-icons_googlesheets.webp')\"\r\n\t\t}\r\n\t\t\r\n\t\tif(linkData == ''){\r\n\t\t\tbutton.classList.add('d-none');\r\n\t\t}\r\n\t})\r\n<\/script>\n<h2><b><span id=\"c\">Kapan Anda Harus Beralih Menggunakan Sistem Lain?<\/span><\/b><\/h2>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-full wp-image-190260\" src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/03\/Sistem-Inventaris-untuk-Stock-Reservation-e1772528045717.webp\" alt=\"\" width=\"1540\" height=\"865\" srcset=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/03\/Sistem-Inventaris-untuk-Stock-Reservation-e1772528045717.webp 1540w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/03\/Sistem-Inventaris-untuk-Stock-Reservation-e1772528045717-300x169.webp 300w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/03\/Sistem-Inventaris-untuk-Stock-Reservation-e1772528045717-1024x575.webp 1024w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/03\/Sistem-Inventaris-untuk-Stock-Reservation-e1772528045717-768x431.webp 768w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/03\/Sistem-Inventaris-untuk-Stock-Reservation-e1772528045717-1536x863.webp 1536w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/03\/Sistem-Inventaris-untuk-Stock-Reservation-e1772528045717-748x420.webp 748w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/03\/Sistem-Inventaris-untuk-Stock-Reservation-e1772528045717-150x84.webp 150w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/03\/Sistem-Inventaris-untuk-Stock-Reservation-e1772528045717-696x391.webp 696w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/03\/Sistem-Inventaris-untuk-Stock-Reservation-e1772528045717-1068x600.webp 1068w\" sizes=\"auto, (max-width: 1540px) 100vw, 1540px\" \/><\/p>\n<p>Excel adalah titik awal yang valid. Tapi ada momen-momen spesifik di mana mempertahankan Excel justru menciptakan masalah baru, bukan memecahkan yang lama.<\/p>\n<p>Cek kondisi operasional Anda terhadap lima sinyal berikut:<\/p>\n<h3><b>1. Volume SKU menembus 500+<\/b><\/h3>\n<p>Input manual untuk ratusan baris data memakan 2\u20133 hari kerja per siklus opname. File Excel pun mulai lambat, dan risiko rumus error atau baris yang terlewat semakin tinggi seiring bertambahnya data.<\/p>\n<h3><b>2. Frekuensi opname meningkat jadi mingguan atau harian<\/b><\/h3>\n<p>Ketika opname harus dilakukan lebih sering, tim gudang menghabiskan lebih banyak waktu untuk mengisi spreadsheet daripada menganalisis hasilnya. Excel tidak dirancang untuk ritme operasional secepat itu.<\/p>\n<h3><b>3. Gudang atau toko di lebih dari satu lokasi<\/b><\/h3>\n<p>Koordinasi file Excel antar lokasi menciptakan masalah klasik: ada versi A, versi B, versi &#8220;final&#8221;, dan versi &#8220;final-fix&#8221; \u2014 dan tidak ada yang tahu mana yang paling mutakhir.<\/p>\n<h3><b>4. Item yang sama terus muncul di kolom &#8220;Kurang&#8221; setiap siklus<\/b><\/h3>\n<p>Excel mencatat selisih, tapi tidak bisa mencegahnya terjadi lagi. Tanpa kontrol transaksi secara real-time, akar masalah tidak pernah terdeteksi \u2014 hanya terus dicatat lalu diabaikan.<\/p>\n<h3><b>5. Departemen lain butuh data stok yang up-to-date<\/b><\/h3>\n<p>Jika tim sales, pembelian, atau akuntansi harus meminta file Excel secara manual setiap kali butuh data stok, itu sinyal bahwa sistem sudah tidak efisien. Excel berdiri sendiri dan tidak ada koneksi otomatis ke proses bisnis lainnya.<\/p>\n<p>Jika Anda mencentang 2 atau lebih kondisi di atas, biaya waktu dan risiko kesalahan dari Excel sudah lebih besar daripada nilai penghematannya.<\/p>\n<p><a href=\"https:\/\/www.hashmicro.com\/id\/blog\/rekomendasi-sistem-manajemen-inventory-di-indonesia-yang-wajib-diketahui\/\">Sistem manajemen inventaris berbasis software<\/a> dirancang untuk menangani kondisi-kondisi di atas: stok diperbarui otomatis setiap ada transaksi, opname bisa dilakukan via barcode scanner tanpa input manual, dan seluruh data langsung terhubung ke modul pembelian dan akuntansi.<\/p>\n<p>Banyak perusahaan baru mempertimbangkan migrasi setelah mengalami kerugian dari selisih stok yang tidak terdeteksi. Padahal tanda-tandanya sudah terlihat jauh sebelum itu. Biasanya terlihat dari frekuensi opname yang terus meningkat dan waktu proses yang semakin lama.<\/p>\n<h2><b>Kesimpulan<\/b><\/h2>\n<p>Laporan stock opname adalah mekanisme kontrol yang menjaga angka di sistem tetap mencerminkan kondisi nyata di gudang. Selisih sekecil apapun yang tidak ditindaklanjuti akan terakumulasi, dan pada akhirnya memengaruhi keputusan pembelian, penetapan harga, bahkan laporan keuangan akhir periode.<\/p>\n<p>Template Excel yang sudah Anda unduh di atas mencakup ketiga elemen tersebut. Gunakan sebagai landasan. Ketika skala bisnis Anda berkembang melampaui kapasitas yang bisa dikelola Excel, itu bukan kegagalan sistem, melainkan tanda bahwa operasional Anda sudah tumbuh cukup besar untuk naik ke level berikutnya.<\/p>\n\n<h2><strong>Pertanyaan Seputar Stock Opname Excel<\/strong><\/h2>\n<ul class=\"bottom_faq\">\n<li>\n<details>\n<summary><strong>Berapa lama waktu yang dibutuhkan untuk menyelesaikan stock opname dengan Excel?<\/strong><\/summary>\n<p>Untuk inventaris di bawah 200 SKU, proses lengkap \u2014 dari penghitungan fisik hingga laporan final \u2014 biasanya selesai dalam satu hari kerja jika persiapan sudah matang. Inventaris 200\u2013500 SKU rata-rata membutuhkan 2 hari. Waktu bisa lebih panjang jika data stok sistem tidak rapi sebelum opname dimulai, karena tim harus melakukan rekonsiliasi data terlebih dahulu.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>Apa yang harus dilakukan setelah laporan stock opname selesai dibuat?<\/strong><\/summary>\n<p>Laporan bukan akhir dari proses. Setiap item berstatus &#8220;Kurang&#8221; perlu diselidiki penyebabnya \u2014 apakah karena pencurian, kerusakan, transaksi yang tidak dicatat, atau kesalahan input sistem. Hasil investigasi dicatat di kolom Keterangan, dan penyesuaian stok (stock adjustment) dilakukan secara resmi di sistem. Laporan yang tidak ditindaklanjuti hanya menjadi arsip tanpa nilai operasional.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>Apakah stock opname harus dilakukan setahun sekali?<\/strong><\/summary>\n<p>Tidak ada aturan baku \u2014 frekuensi tergantung jenis bisnis dan risiko inventaris. Toko retail dengan perputaran barang tinggi idealnya opname setiap bulan atau per kuartal. Gudang manufaktur dengan komponen bernilai tinggi mungkin perlu cycle count mingguan pada item tertentu. Yang perlu dihindari adalah menunggu akhir tahun fiskal karena selisih yang terakumulasi selama 12 bulan jauh lebih sulit ditelusuri.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>Bagaimana cara menangani barang rusak atau kedaluwarsa yang ditemukan saat stock opname?<\/strong><\/summary>\n<p>Barang rusak dan kedaluwarsa dicatat terpisah di kolom Keterangan dengan label spesifik, misalnya &#8220;Rusak \u2014 tidak layak jual&#8221; atau &#8220;Expired \u2014 [tanggal]&#8221;. Jumlahnya tetap masuk ke Stok Fisik apa adanya, bukan dikurangi dulu, agar selisih terdeteksi secara akurat. Setelah laporan difinalisasi, barang tersebut diproses melalui prosedur write-off atau disposal sesuai kebijakan perusahaan dan dicatat sebagai beban kerugian persediaan.<\/p>\n<\/details>\n<\/li>\n<\/ul>\n<p><script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@type\": \"FAQPage\",\n  \"mainEntity\": [\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Berapa lama waktu yang dibutuhkan untuk menyelesaikan stock opname dengan Excel?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Untuk inventaris di bawah 200 SKU, proses lengkap dari penghitungan fisik hingga laporan final biasanya selesai dalam satu hari kerja jika persiapan sudah matang. Inventaris 200\u2013500 SKU rata-rata membutuhkan 2 hari. Waktu bisa lebih panjang jika data stok sistem tidak rapi sebelum opname dimulai karena tim harus melakukan rekonsiliasi data terlebih dahulu.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Apa yang harus dilakukan setelah laporan stock opname selesai dibuat?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Laporan bukan akhir dari proses. Setiap item berstatus kurang perlu diselidiki penyebabnya, apakah karena pencurian, kerusakan, transaksi yang tidak dicatat, atau kesalahan input sistem. Hasil investigasi dicatat di kolom keterangan, dan penyesuaian stok dilakukan secara resmi di sistem. Laporan yang tidak ditindaklanjuti hanya menjadi arsip tanpa nilai operasional.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Apakah stock opname harus dilakukan setahun sekali?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Tidak ada aturan baku karena frekuensi tergantung jenis bisnis dan risiko inventaris. Toko retail dengan perputaran barang tinggi idealnya melakukan opname setiap bulan atau per kuartal. Gudang manufaktur dengan komponen bernilai tinggi mungkin perlu cycle count mingguan pada item tertentu. Yang perlu dihindari adalah menunggu akhir tahun fiskal karena selisih yang terakumulasi selama 12 bulan jauh lebih sulit ditelusuri.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Bagaimana cara menangani barang rusak atau kedaluwarsa yang ditemukan saat stock opname?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Barang rusak dan kedaluwarsa dicatat terpisah di kolom keterangan dengan label spesifik, misalnya Rusak \u2014 tidak layak jual atau Expired \u2014 tanggal tertentu. Jumlahnya tetap masuk ke stok fisik apa adanya agar selisih terdeteksi secara akurat. Setelah laporan difinalisasi, barang tersebut diproses melalui prosedur write-off atau disposal sesuai kebijakan perusahaan dan dicatat sebagai beban kerugian persediaan.\"\n      }\n    }\n  ]\n}\n<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Setiap akhir periode, ada satu pertanyaan yang hampir selalu memicu kepanikan di bagian gudang: &#8220;Kok angkanya beda dengandi sistem?&#8221; Selisih stok adalah masalah yang terdengar sepele tapi dampaknya jauh lebih luas dari yang terlihat. Stok yang tercatat 120 unit sementara fisiknya hanya 117 bukan sekadar perbedaan angka. Ini bisa berarti ada barang yang hilang tanpa [&hellip;]<\/p>\n","protected":false},"author":223,"featured_media":193468,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[88],"tags":[],"class_list":{"0":"post-193452","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-inventory"},"acf":{"post_reviewer":""},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.1 (Yoast SEO v27.5) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Contoh Format Stock Opname Excel serta Templatenya<\/title>\n<meta name=\"description\" content=\"Berikut cara membuat laporan stock opname di Excel lengkap dengan template gratis, dan panduan blind count. Cocok untuk toko dan gudang.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.hashmicro.com\/id\/blog\/contoh-format-stock-opname-excel\/\" \/>\n<meta property=\"og:locale\" content=\"id_ID\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Contoh Format Stock Opname Excel serta Templatenya\" \/>\n<meta property=\"og:description\" content=\"Berikut cara membuat laporan stock opname di Excel lengkap dengan template gratis, dan panduan blind count. Cocok untuk toko dan gudang.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.hashmicro.com\/id\/blog\/contoh-format-stock-opname-excel\/\" \/>\n<meta property=\"og:site_name\" content=\"HashMicro Indonesia\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/hashmicro\" \/>\n<meta property=\"article:published_time\" content=\"2026-05-08T07:36:25+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/05\/stock-opname-excel-1.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1672\" \/>\n\t<meta property=\"og:image:height\" content=\"941\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Nur Fi&#039;llia Nugrahani\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@hashmicro\" \/>\n<meta name=\"twitter:site\" content=\"@hashmicro\" \/>\n<meta name=\"twitter:label1\" content=\"Ditulis oleh\" \/>\n\t<meta name=\"twitter:data1\" content=\"Nur Fi&#039;llia Nugrahani\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimasi waktu membaca\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 menit\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/contoh-format-stock-opname-excel\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/contoh-format-stock-opname-excel\\\/\"},\"author\":{\"name\":\"Nur Fi'llia Nugrahani\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/#\\\/schema\\\/person\\\/116eac6e4748cbaa02f000016234fc39\"},\"headline\":\"Contoh Format Stock Opname Excel serta Templatenya\",\"datePublished\":\"2026-05-08T07:36:25+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/contoh-format-stock-opname-excel\\\/\"},\"wordCount\":1697,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/contoh-format-stock-opname-excel\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/stock-opname-excel-1.webp\",\"articleSection\":[\"Inventory\"],\"inLanguage\":\"id\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/contoh-format-stock-opname-excel\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/contoh-format-stock-opname-excel\\\/\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/contoh-format-stock-opname-excel\\\/\",\"name\":\"Contoh Format Stock Opname Excel serta Templatenya\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/contoh-format-stock-opname-excel\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/contoh-format-stock-opname-excel\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/stock-opname-excel-1.webp\",\"datePublished\":\"2026-05-08T07:36:25+00:00\",\"description\":\"Berikut cara membuat laporan stock opname di Excel lengkap dengan template gratis, dan panduan blind count. Cocok untuk toko dan gudang.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/contoh-format-stock-opname-excel\\\/#breadcrumb\"},\"inLanguage\":\"id\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/contoh-format-stock-opname-excel\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"id\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/contoh-format-stock-opname-excel\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/stock-opname-excel-1.webp\",\"contentUrl\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/stock-opname-excel-1.webp\",\"width\":1672,\"height\":941,\"caption\":\"stock-opname-excel\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/contoh-format-stock-opname-excel\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Contoh Format Stock Opname Excel serta Templatenya\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/\",\"name\":\"HashMicro Indonesia\",\"description\":\"Blog Software Manajemen Bisnis Indonesia #1\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"id\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/#organization\",\"name\":\"HashMicro Indonesia\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"id\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/11\\\/hashmicro-logo-blog.webp\",\"contentUrl\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/11\\\/hashmicro-logo-blog.webp\",\"width\":924,\"height\":121,\"caption\":\"HashMicro Indonesia\"},\"image\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/hashmicro\",\"https:\\\/\\\/x.com\\\/hashmicro\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/hashmicro\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/#\\\/schema\\\/person\\\/116eac6e4748cbaa02f000016234fc39\",\"name\":\"Nur Fi'llia Nugrahani\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"id\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/cropped-foto-profil-nuri-96x96.webp\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/cropped-foto-profil-nuri-96x96.webp\",\"contentUrl\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/cropped-foto-profil-nuri-96x96.webp\",\"caption\":\"Nur Fi'llia Nugrahani\"},\"description\":\"Nuri adalah seorang spesialis dalam bidang inventory management dengan pengalaman 3 tahun. Berfokus pada penulisan yang mengangkat topik pengelolaan stok, pengendalian persediaan, dan implementasi sistem inventory digital untuk menjamin efisiensi operasional bisnis.\",\"sameAs\":[\"https:\\\/\\\/www.linkedin.com\\\/in\\\/nur-fi-llia-nugrahani\"],\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/author\\\/fillia-nugrahani\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Contoh Format Stock Opname Excel serta Templatenya","description":"Berikut cara membuat laporan stock opname di Excel lengkap dengan template gratis, dan panduan blind count. Cocok untuk toko dan gudang.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.hashmicro.com\/id\/blog\/contoh-format-stock-opname-excel\/","og_locale":"id_ID","og_type":"article","og_title":"Contoh Format Stock Opname Excel serta Templatenya","og_description":"Berikut cara membuat laporan stock opname di Excel lengkap dengan template gratis, dan panduan blind count. Cocok untuk toko dan gudang.","og_url":"https:\/\/www.hashmicro.com\/id\/blog\/contoh-format-stock-opname-excel\/","og_site_name":"HashMicro Indonesia","article_publisher":"https:\/\/www.facebook.com\/hashmicro","article_published_time":"2026-05-08T07:36:25+00:00","og_image":[{"width":1672,"height":941,"url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/05\/stock-opname-excel-1.webp","type":"image\/webp"}],"author":"Nur Fi'llia Nugrahani","twitter_card":"summary_large_image","twitter_creator":"@hashmicro","twitter_site":"@hashmicro","twitter_misc":{"Ditulis oleh":"Nur Fi'llia Nugrahani","Estimasi waktu membaca":"10 menit"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.hashmicro.com\/id\/blog\/contoh-format-stock-opname-excel\/#article","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/contoh-format-stock-opname-excel\/"},"author":{"name":"Nur Fi'llia Nugrahani","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/116eac6e4748cbaa02f000016234fc39"},"headline":"Contoh Format Stock Opname Excel serta Templatenya","datePublished":"2026-05-08T07:36:25+00:00","mainEntityOfPage":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/contoh-format-stock-opname-excel\/"},"wordCount":1697,"commentCount":0,"publisher":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#organization"},"image":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/contoh-format-stock-opname-excel\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/05\/stock-opname-excel-1.webp","articleSection":["Inventory"],"inLanguage":"id","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.hashmicro.com\/id\/blog\/contoh-format-stock-opname-excel\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.hashmicro.com\/id\/blog\/contoh-format-stock-opname-excel\/","url":"https:\/\/www.hashmicro.com\/id\/blog\/contoh-format-stock-opname-excel\/","name":"Contoh Format Stock Opname Excel serta Templatenya","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/contoh-format-stock-opname-excel\/#primaryimage"},"image":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/contoh-format-stock-opname-excel\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/05\/stock-opname-excel-1.webp","datePublished":"2026-05-08T07:36:25+00:00","description":"Berikut cara membuat laporan stock opname di Excel lengkap dengan template gratis, dan panduan blind count. Cocok untuk toko dan gudang.","breadcrumb":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/contoh-format-stock-opname-excel\/#breadcrumb"},"inLanguage":"id","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.hashmicro.com\/id\/blog\/contoh-format-stock-opname-excel\/"]}]},{"@type":"ImageObject","inLanguage":"id","@id":"https:\/\/www.hashmicro.com\/id\/blog\/contoh-format-stock-opname-excel\/#primaryimage","url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/05\/stock-opname-excel-1.webp","contentUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/05\/stock-opname-excel-1.webp","width":1672,"height":941,"caption":"stock-opname-excel"},{"@type":"BreadcrumbList","@id":"https:\/\/www.hashmicro.com\/id\/blog\/contoh-format-stock-opname-excel\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.hashmicro.com\/id\/blog\/"},{"@type":"ListItem","position":2,"name":"Contoh Format Stock Opname Excel serta Templatenya"}]},{"@type":"WebSite","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#website","url":"https:\/\/www.hashmicro.com\/id\/blog\/","name":"HashMicro Indonesia","description":"Blog Software Manajemen Bisnis Indonesia #1","publisher":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.hashmicro.com\/id\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"id"},{"@type":"Organization","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#organization","name":"HashMicro Indonesia","url":"https:\/\/www.hashmicro.com\/id\/blog\/","logo":{"@type":"ImageObject","inLanguage":"id","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2023\/11\/hashmicro-logo-blog.webp","contentUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2023\/11\/hashmicro-logo-blog.webp","width":924,"height":121,"caption":"HashMicro Indonesia"},"image":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/hashmicro","https:\/\/x.com\/hashmicro","https:\/\/www.linkedin.com\/company\/hashmicro"]},{"@type":"Person","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/116eac6e4748cbaa02f000016234fc39","name":"Nur Fi'llia Nugrahani","image":{"@type":"ImageObject","inLanguage":"id","@id":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/08\/cropped-foto-profil-nuri-96x96.webp","url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/08\/cropped-foto-profil-nuri-96x96.webp","contentUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/08\/cropped-foto-profil-nuri-96x96.webp","caption":"Nur Fi'llia Nugrahani"},"description":"Nuri adalah seorang spesialis dalam bidang inventory management dengan pengalaman 3 tahun. Berfokus pada penulisan yang mengangkat topik pengelolaan stok, pengendalian persediaan, dan implementasi sistem inventory digital untuk menjamin efisiensi operasional bisnis.","sameAs":["https:\/\/www.linkedin.com\/in\/nur-fi-llia-nugrahani"],"url":"https:\/\/www.hashmicro.com\/id\/blog\/author\/fillia-nugrahani\/"}]}},"focus_keyword":"stock opname excel","order_j":"","_links":{"self":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/193452","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/users\/223"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/comments?post=193452"}],"version-history":[{"count":1,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/193452\/revisions"}],"predecessor-version":[{"id":193469,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/193452\/revisions\/193469"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/media\/193468"}],"wp:attachment":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/media?parent=193452"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/categories?post=193452"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/tags?post=193452"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}