<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Power Query archivos - reportingfinanciero.es</title>
	<atom:link href="https://reportingfinanciero.es/category/power-query/feed/" rel="self" type="application/rss+xml" />
	<link>https://reportingfinanciero.es/category/power-query/</link>
	<description>Digitalización financiera</description>
	<lastBuildDate>Wed, 04 Feb 2026 12:54:04 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://reportingfinanciero.es/wp-content/uploads/2024/01/logo-repoting-financiero-190x190-1-150x150.webp</url>
	<title>Power Query archivos - reportingfinanciero.es</title>
	<link>https://reportingfinanciero.es/category/power-query/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Anexando datos cuando el ERP almacena la información de cada año en una tabla distinta.</title>
		<link>https://reportingfinanciero.es/anexando-datos-cuando-el-erp-almacena-la-informacion-de-cada-ano-en-una-tabla-distinta/</link>
		
		<dc:creator><![CDATA[Javier San Juan]]></dc:creator>
		<pubDate>Mon, 02 Feb 2026 18:18:02 +0000</pubDate>
				<category><![CDATA[Finanzas]]></category>
		<category><![CDATA[Power Query]]></category>
		<guid isPermaLink="false">https://reportingfinanciero.es/?p=3314</guid>

					<description><![CDATA[<p>En este post voy a detallar el paso a paso de un reto que tuve que afrontar recientemente en un proyecto de consultoría. Reto: El objetivo era construir un cuadro de mando financiero para un cliente, para lo que tenía que capturar de la base de datos SQL Server de su ERP los datos de ... </p>
<p class="read-more-container"><a title="Anexando datos cuando el ERP almacena la información de cada año en una tabla distinta." class="read-more button" href="https://reportingfinanciero.es/anexando-datos-cuando-el-erp-almacena-la-informacion-de-cada-ano-en-una-tabla-distinta/#more-3314" aria-label="Leer más sobre Anexando datos cuando el ERP almacena la información de cada año en una tabla distinta.">Leer más</a></p>
<p>La entrada <a href="https://reportingfinanciero.es/anexando-datos-cuando-el-erp-almacena-la-informacion-de-cada-ano-en-una-tabla-distinta/">Anexando datos cuando el ERP almacena la información de cada año en una tabla distinta.</a> se publicó primero en <a href="https://reportingfinanciero.es">reportingfinanciero.es</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>En este post voy a detallar el paso a paso de un reto que tuve que afrontar recientemente en un proyecto de consultoría.</p>



<p class="has-large-font-size"><strong><u>Reto:</u></strong></p>



<p>El objetivo era construir un cuadro de mando financiero para un cliente, para lo que tenía que capturar de la base de datos SQL Server de su ERP los datos de los movimientos del libro diario.</p>



<p>El cliente quería ver los datos de los últimos 5 años y en la base de datos se generaba una tabla distinta para cada empresa y ejercicio.</p>



<p>Al ser un modelo financiero multiempresa (había que mostrar la información de las 3 empresas del grupo), había que conectarse a 15 tablas distintas para conseguir toda la información contable necesaria (3 empresas * 5 ejercicios).</p>



<p>La nomenclatura de las tablas seguía el siguiente patrón:&nbsp; DATDIXXYY , donde XX refleja el código de la empresa (podía tener los valores 21, 22 o 24) e YY refleja los 2 últimos dígitos del ejercicio (22 para 2022, 23 para 2023 …).</p>



<p>Por tanto, y a modo de ejemplo, DATDI2122 sería la tabla que recoge los apuntes contables de la empresa 21 del ejercicio 2022.</p>



<p>Mi primer acercamiento fue hacer una consulta distinta para cada empresa y ejercicio (15 consultas distintas) y después anexarlas en Power Query.</p>



<p>Conseguía tener toda la información pero tenía un principal problema a resolver:</p>



<p>Cada cambio de ejercicio tenía que modificar el origen de las consultas. Por ejemplo, con la entrada del año 2026, tenía que añadir las tablas DATDIXX26 y eliminar las tablas DATDIXX21 (quiero tener únicamente 5 ejercicios).</p>



<p>Voy a explicar a continuación cómo poder hacer esa búsqueda de las tablas a cargar al modelo de forma dinámica y, además, anexar las 15 tablas dentro del mismo script de Power Query para evitarnos tener que hacer 15 consultas separadas y después anexarlas.</p>



<p class="has-large-font-size"><strong><u>Solución:</u></strong></p>



<p>A efectos de poder simplificar la explicación lo máximo posible, voy a indicar la solución paso a paso apoyándome de un fichero Excel en el que tengo creadas 15 tablas que simulan cada una de las tablas a las que nos conectaríamos a SQL.</p>



<p class="has-base-background-color has-background"><strong>NOTA: </strong>Te dejaré enlace de descarga al final del post con el fichero Excel donde están las tablas, un txt con el script del código M empleado, y el fichero pbix con el reto resuelto. Con una pequeña modificación del paso de Origen que te explicaré más adelante obtendrás el mismo resultado cuando cambies el origen a tablas de una BBDD de SQL Server.</p>



<p>Muestro en la siguiente imagen la primera de las tablas, la de la empresa 21 del ejercicio 2022, es decir, DATDI2122:</p>



<figure class="wp-block-image size-large"><a href="https://reportingfinanciero.es/wp-content/uploads/2026/02/image.jpg"><img fetchpriority="high" decoding="async" width="1024" height="487" src="https://reportingfinanciero.es/wp-content/uploads/2026/02/image-1024x487.jpg" alt="" class="wp-image-3316" srcset="https://reportingfinanciero.es/wp-content/uploads/2026/02/image-1024x487.jpg 1024w, https://reportingfinanciero.es/wp-content/uploads/2026/02/image-300x143.jpg 300w, https://reportingfinanciero.es/wp-content/uploads/2026/02/image-768x366.jpg 768w, https://reportingfinanciero.es/wp-content/uploads/2026/02/image.jpg 1107w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<p></p>



<p>Vemos como en el nombre de la tabla hemos indicado “DATDI2122” y, para hacer la comprobación en la carga de los datos, tanto en el importe del Debe (celda B2) como en el concepto (celda D2) he hecho referencia al nombre de la tabla (2122).</p>



<p><strong>NOTA: </strong>He incluido en cada tabla un único apunte contable y unas pocas columnas para visualizar mejor la información una vez que anexemos todas las tablas. En el SQL real tendremos obviamente todos los apuntes contables de la empresa y ejercicio seleccionado, además de todas las columnas que se almacenen en la base de datos.</p>



<p>Explicado esto, vamos a ir a Power Query para ver cómo realizamos la conexión a la información:</p>



<p>Pinchamos en Nuevo Origen → Libro de Excel ; y seleccionamos en nuestro equipo el fichero donde tenemos la información.</p>



<p>Una vez cargado nos aparecen en el navegador todas las posibles conexiones (todas las tablas y hojas).</p>



<p>Como se muestra en la siguiente imagen, en lugar de hacer check en las distintas tablas, hacemos click derecho sobre la parte que tiene el icono de carpeta y el nombre del fichero Excel, y pulsamos sobre “Transformar datos”:</p>



<figure class="wp-block-image size-large"><a href="https://reportingfinanciero.es/wp-content/uploads/2026/02/image-6.png"><img decoding="async" width="1024" height="932" src="https://reportingfinanciero.es/wp-content/uploads/2026/02/image-6-1024x932.png" alt="" class="wp-image-3332" srcset="https://reportingfinanciero.es/wp-content/uploads/2026/02/image-6-1024x932.png 1024w, https://reportingfinanciero.es/wp-content/uploads/2026/02/image-6-300x273.png 300w, https://reportingfinanciero.es/wp-content/uploads/2026/02/image-6-768x699.png 768w, https://reportingfinanciero.es/wp-content/uploads/2026/02/image-6.png 1152w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<p></p>



<p>Nos aparecen entonces todas las posibles conexiones pero dentro de una consulta de Power Query:</p>



<figure class="wp-block-image size-large"><a href="https://reportingfinanciero.es/wp-content/uploads/2026/02/image-4.png"><img decoding="async" width="1024" height="720" src="https://reportingfinanciero.es/wp-content/uploads/2026/02/image-4-1024x720.png" alt="" class="wp-image-3326" srcset="https://reportingfinanciero.es/wp-content/uploads/2026/02/image-4-1024x720.png 1024w, https://reportingfinanciero.es/wp-content/uploads/2026/02/image-4-300x211.png 300w, https://reportingfinanciero.es/wp-content/uploads/2026/02/image-4-768x540.png 768w, https://reportingfinanciero.es/wp-content/uploads/2026/02/image-4.png 1105w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<p></p>



<p>Si vamos al editor avanzado de Power Query, veremos que tenemos únicamente el paso de Origen:</p>



<figure class="wp-block-image size-large"><a href="https://reportingfinanciero.es/wp-content/uploads/2026/02/image-5.png"><img loading="lazy" decoding="async" width="1024" height="164" src="https://reportingfinanciero.es/wp-content/uploads/2026/02/image-5-1024x164.png" alt="" class="wp-image-3327" srcset="https://reportingfinanciero.es/wp-content/uploads/2026/02/image-5-1024x164.png 1024w, https://reportingfinanciero.es/wp-content/uploads/2026/02/image-5-300x48.png 300w, https://reportingfinanciero.es/wp-content/uploads/2026/02/image-5-768x123.png 768w, https://reportingfinanciero.es/wp-content/uploads/2026/02/image-5.png 1106w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<p></p>



<p>Vamos a pegar ahora en el editor avanzado el script que te dejo en el material de descarga y <strong>después lo vamos a explicar paso a paso</strong>.</p>



<p><strong>NOTA: </strong>Debes adaptar en el paso de origen del script la ruta de tu equipo donde guardes el fichero y el nombre que le des al fichero.</p>



<p>Quedaría el editor avanzado como muestro en la siguiente imagen:</p>



<figure class="wp-block-image size-large"><a href="https://reportingfinanciero.es/wp-content/uploads/2026/02/image-3.png"><img loading="lazy" decoding="async" width="1024" height="682" src="https://reportingfinanciero.es/wp-content/uploads/2026/02/image-3-1024x682.png" alt="" class="wp-image-3324" srcset="https://reportingfinanciero.es/wp-content/uploads/2026/02/image-3-1024x682.png 1024w, https://reportingfinanciero.es/wp-content/uploads/2026/02/image-3-300x200.png 300w, https://reportingfinanciero.es/wp-content/uploads/2026/02/image-3-768x512.png 768w, https://reportingfinanciero.es/wp-content/uploads/2026/02/image-3.png 1105w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<p></p>



<p>Y si pinchamos en “Listo”, veremos cómo obtenemos el resultado deseado: traernos en una única consulta la información de los apuntes contables de las 3 empresas de los 5 años (vemos en la columna “Debe” como los importes hacen referencia a los códigos de empresa y ejercicios requeridos (XXYY que indicábamos anteriormente):</p>



<figure class="wp-block-image size-full"><a href="https://reportingfinanciero.es/wp-content/uploads/2026/02/image-1.png"><img loading="lazy" decoding="async" width="676" height="482" src="https://reportingfinanciero.es/wp-content/uploads/2026/02/image-1.png" alt="" class="wp-image-3317" srcset="https://reportingfinanciero.es/wp-content/uploads/2026/02/image-1.png 676w, https://reportingfinanciero.es/wp-content/uploads/2026/02/image-1-300x214.png 300w" sizes="auto, (max-width: 676px) 100vw, 676px" /></a></figure>



<p></p>



<p></p>



<p class="has-large-font-size"><strong><u>Explicación del código M:</u></strong></p>



<p>Una vez conseguido el reto, vamos ahora a explicar cada uno de los pasos aplicados en Power Query:</p>



<p><strong>Paso 1.- Origen:</strong></p>



<p>Ya explicado anteriormente. En la segunda imagen del post vemos en detalle cómo llegar, y el resultado sería el de la tercera imagen.</p>



<p><strong>Paso 2.- ListaEmpresas:</strong></p>



<p>Creamos una lista con las empresas que queremos incorporar a nuestro modelo multiempresa (en nuestro caso las empresas 21, 22 y 24):</p>



<figure class="wp-block-image size-full"><a href="https://reportingfinanciero.es/wp-content/uploads/2026/02/image.png"><img loading="lazy" decoding="async" width="769" height="403" src="https://reportingfinanciero.es/wp-content/uploads/2026/02/image.png" alt="" class="wp-image-3319" srcset="https://reportingfinanciero.es/wp-content/uploads/2026/02/image.png 769w, https://reportingfinanciero.es/wp-content/uploads/2026/02/image-300x157.png 300w" sizes="auto, (max-width: 769px) 100vw, 769px" /></a></figure>



<p></p>



<p><strong>Paso 3.- Anio:</strong></p>



<p>Nos quedamos con los 2 últimos dígitos del año actual (dinámico con el DateTime.LocalNow), que será el último que queremos incorporar a nuestro modelo. Serían las YY del nombre de las tablas a importar:</p>



<figure class="wp-block-image size-large"><a href="https://reportingfinanciero.es/wp-content/uploads/2026/02/image-1.jpg"><img loading="lazy" decoding="async" width="1024" height="429" src="https://reportingfinanciero.es/wp-content/uploads/2026/02/image-1-1024x429.jpg" alt="" class="wp-image-3320" srcset="https://reportingfinanciero.es/wp-content/uploads/2026/02/image-1-1024x429.jpg 1024w, https://reportingfinanciero.es/wp-content/uploads/2026/02/image-1-300x126.jpg 300w, https://reportingfinanciero.es/wp-content/uploads/2026/02/image-1-768x322.jpg 768w, https://reportingfinanciero.es/wp-content/uploads/2026/02/image-1.jpg 1106w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<p></p>



<p><strong>Paso 4.- ListaAnios:</strong></p>



<p>Creamos una lista que va hasta el año calculado en el paso anterior (que sería el último ejercicio) y empieza 4 años antes (para traernos los últimos 5 ejercicios requeridos); y los pasamos a formato texto:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="892" height="393" src="https://reportingfinanciero.es/wp-content/uploads/2026/02/Imagen-9.png" alt="" class="wp-image-3345" srcset="https://reportingfinanciero.es/wp-content/uploads/2026/02/Imagen-9.png 892w, https://reportingfinanciero.es/wp-content/uploads/2026/02/Imagen-9-300x132.png 300w, https://reportingfinanciero.es/wp-content/uploads/2026/02/Imagen-9-768x338.png 768w" sizes="auto, (max-width: 892px) 100vw, 892px" /></figure>



<p></p>



<p></p>



<p><strong>Paso 5.- FiltrarTablas:</strong></p>



<p>El código completo de este paso no se ve en la siguiente imagen y es por lo que lo pego en texto a continuación:</p>



<div class="wp-block-group is-vertical is-layout-flex wp-container-core-group-is-layout-8cf370e7 wp-block-group-is-layout-flex">
<p>= Table.SelectRows(Origen, each</p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; let</p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Nombre = [Item],</p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EsTabla = [Kind] = «Table»,</p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EmpresaValida = List.AnyTrue(List.Transform(ListaEmpresas, (e) =&gt; Text.StartsWith(Nombre, «DATDI» &amp; e))),</p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AnioValido = List.AnyTrue(List.Transform(ListaAnios, (a) =&gt; Text.EndsWith(Nombre, a)))</p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; in</p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EsTabla and EmpresaValida and AnioValido</p>



<p>&nbsp;&nbsp;&nbsp; )</p>
</div>



<p></p>



<p>Lo que hacemos es seleccionar los registros que nos quedamos del primer paso (Origen), filtrando porque el nombre de la columna “Item” empiece por “DATDI” y cualquiera de los códigos de empresa de la ListaEmpresas del paso 2 (es decir, DATDI21, DATDI22 o DATDI24).</p>



<p>Además, el nombre de la columna “Item” debe acabar por cualquiera de los ejercicios indicados en la lista “ListaAnios” del paso 4 (22 a 26, es decir, de los ejercicios 2022 al 2026).</p>



<p>De forma adicional, la columna “Kind” del paso de Origen tiene que ser del tipo “Table”.</p>



<p>Obtenemos como resultado lo siguiente:</p>



<figure class="wp-block-image size-large"><a href="https://reportingfinanciero.es/wp-content/uploads/2026/02/image-2.png"><img loading="lazy" decoding="async" width="1024" height="503" src="https://reportingfinanciero.es/wp-content/uploads/2026/02/image-2-1024x503.png" alt="" class="wp-image-3325" srcset="https://reportingfinanciero.es/wp-content/uploads/2026/02/image-2-1024x503.png 1024w, https://reportingfinanciero.es/wp-content/uploads/2026/02/image-2-300x147.png 300w, https://reportingfinanciero.es/wp-content/uploads/2026/02/image-2-768x377.png 768w, https://reportingfinanciero.es/wp-content/uploads/2026/02/image-2.png 1106w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<p></p>



<p><strong>Paso 6.- TablasConEmpresa:</strong></p>



<p>Detallamos nuevamente el código M de este paso:</p>



<div class="wp-block-group is-vertical is-layout-flex wp-container-core-group-is-layout-8cf370e7 wp-block-group-is-layout-flex">
<p>= Table.AddColumn(</p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FiltrarTablas,</p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; «DataConEmpresa»,</p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; each</p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; let</p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NombreTabla = [Item],</p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Empresa = Number.FromText(Text.Middle(NombreTabla, 5, 2))</p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; in</p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Table.AddColumn(</p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [Data],</p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; «id Empresa»,</p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; each Empresa,</p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Int64.Type</p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )</p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )</p>
</div>



<p></p>



<p>Lo que hacemos es añadir una nueva columna a los datos que vienen en la columna “Data”.&nbsp; Al ser un modelo multiempresa, necesitamos añadir a los datos que nos vienen en los apuntes el código de la empresa (en mi caso esta información no venía del origen, si en tu caso ya te viene el código de la empresa en las tablas de los apuntes contables te ahorrarías este paso)..</p>



<p>La consulta que estamos construyendo será nuestra tabla de hechos de los movimientos contables, y esta columna del código de empresa será la que relacionaremos con la dimensión empresas para poder filtrar de qué empresa/s queremos mostrar la información.</p>



<p>El código de la empresa lo cogemos de la columna “Item”, con Text.Middle, empezando por la posición 5 y cogiendo 2 caracteres.&nbsp; Por ejemplo, en DATDI2122 nos quedamos con 21.</p>



<p>Además, le damos formato número entero.</p>



<p>Toda la información que venía en las tablas originales, más la nueva columna con el código de la empresa, quedan en la nueva columna “DataConEmpresa”:</p>



<figure class="wp-block-image size-large"><a href="https://reportingfinanciero.es/wp-content/uploads/2026/02/image-2.jpg"><img loading="lazy" decoding="async" width="1024" height="463" src="https://reportingfinanciero.es/wp-content/uploads/2026/02/image-2-1024x463.jpg" alt="" class="wp-image-3321" srcset="https://reportingfinanciero.es/wp-content/uploads/2026/02/image-2-1024x463.jpg 1024w, https://reportingfinanciero.es/wp-content/uploads/2026/02/image-2-300x136.jpg 300w, https://reportingfinanciero.es/wp-content/uploads/2026/02/image-2-768x347.jpg 768w, https://reportingfinanciero.es/wp-content/uploads/2026/02/image-2.jpg 1106w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<p></p>



<p><strong>Paso 7.- ListaTablas:</strong></p>



<p>Creamos una lista con las tablas de la columna “DataConEmpresa” (posteriormente combinaremos las tablas incluidas en esta lista):</p>



<figure class="wp-block-image size-large"><a href="https://reportingfinanciero.es/wp-content/uploads/2026/02/image-4.jpg"><img loading="lazy" decoding="async" width="1024" height="540" src="https://reportingfinanciero.es/wp-content/uploads/2026/02/image-4-1024x540.jpg" alt="" class="wp-image-3323" srcset="https://reportingfinanciero.es/wp-content/uploads/2026/02/image-4-1024x540.jpg 1024w, https://reportingfinanciero.es/wp-content/uploads/2026/02/image-4-300x158.jpg 300w, https://reportingfinanciero.es/wp-content/uploads/2026/02/image-4-768x405.jpg 768w, https://reportingfinanciero.es/wp-content/uploads/2026/02/image-4.jpg 1105w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<p></p>



<p><strong>Paso 8.- TablasReducidas:</strong></p>



<p>Nos quedamos únicamente con las columnas que queramos llevar a nuestra consulta definitiva.</p>



<p>Al conectarnos al ERP, nos pueden llegar multitud de columnas y en este paso elegiríamos las columnas que necesitemos:</p>



<figure class="wp-block-image size-large"><a href="https://reportingfinanciero.es/wp-content/uploads/2026/02/image-3.jpg"><img loading="lazy" decoding="async" width="1024" height="524" src="https://reportingfinanciero.es/wp-content/uploads/2026/02/image-3-1024x524.jpg" alt="" class="wp-image-3322" srcset="https://reportingfinanciero.es/wp-content/uploads/2026/02/image-3-1024x524.jpg 1024w, https://reportingfinanciero.es/wp-content/uploads/2026/02/image-3-300x153.jpg 300w, https://reportingfinanciero.es/wp-content/uploads/2026/02/image-3-768x393.jpg 768w, https://reportingfinanciero.es/wp-content/uploads/2026/02/image-3.jpg 1105w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<p></p>



<p><strong>Paso 9.- CombinarTodo:</strong></p>



<p>Combinamos todas las tablas de la lista anterior y obtendríamos las columnas que hayamos seleccionado para todos los apuntes contables de las 15 tablas que hemos indicado.</p>



<p>En nuestro caso nos salen solo 15 registros porque en el Excel había únicamente 1 apunte por cada tabla, pero cuando llevemos este código a producción nos aparecerán todos los apuntes contables de las 3 empresas de los últimos 5 años, en una única consulta:</p>



<figure class="wp-block-image size-large"><a href="https://reportingfinanciero.es/wp-content/uploads/2026/02/image-5.jpg"><img loading="lazy" decoding="async" width="1024" height="532" src="https://reportingfinanciero.es/wp-content/uploads/2026/02/image-5-1024x532.jpg" alt="" class="wp-image-3328" srcset="https://reportingfinanciero.es/wp-content/uploads/2026/02/image-5-1024x532.jpg 1024w, https://reportingfinanciero.es/wp-content/uploads/2026/02/image-5-300x156.jpg 300w, https://reportingfinanciero.es/wp-content/uploads/2026/02/image-5-768x399.jpg 768w, https://reportingfinanciero.es/wp-content/uploads/2026/02/image-5.jpg 1105w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<p></p>



<p>En un último paso daríamos a cada columna su tipo de dato y ya tendríamos toda la información lista para incorporar a nuestro modelo.</p>



<p></p>



<p class="has-large-font-size"><strong><u>Origen SQL:</u></strong></p>



<p>Si queremos cambiar el código para que nos sirva para capturar los datos de una base de datos de SQL, únicamente tendremos que modificar el código del primer paso, el de Origen, indicando lo siguiente:</p>



<p>&nbsp;&nbsp;&nbsp; Origen = Sql.Database(Servidor, BBDD),</p>



<p></p>



<p class="has-large-font-size"><strong><u>Fin:</u></strong></p>



<p>Y con eso ya lo tendríamos!!!</p>



<p>Espero que te haya resultado útil.</p>



<p>Este proyecto ha sido el primero en el que he usado esta técnica y la verdad es que me ha arreglado la papeleta…&nbsp;</p>



<p>Agradecer al gran Ricardo Rincón que me ayudó a encontrar esta solución. Entre su gran soporte, un poco de ChatGPT y adaptando todo a los requisitos del proyecto, llegué a esta solución que funcionó de maravilla.</p>



<p>Seguramente haya otras formas de llegar al objetivo o de simplificar/optimizar esta solución, pero aquí tenéis una propuesta que podéis usar en vuestros futuros proyectos 😉</p>



<p>Te dejo por aquí el material para que puedas replicar el paso a paso y adaptarlo a tus propias necesidades (en el código M adapta la ruta de tu equipo en el primer paso de Origen):</p>



<p></p>



<div class="wp-block-kadence-advancedbtn kb-buttons-wrap kb-btns3314_020fad-c3"><a class="kb-button kt-button button kb-btn3314_61be3d-c4 kt-btn-size-standard kt-btn-width-type-auto kb-btn-global-fill kt-btn-has-text-true kt-btn-has-svg-false  wp-block-kadence-singlebtn" href="https://drive.google.com/drive/folders/1nXiaBXtVCwNLzfOU0WP5kkkTfh-cDKVM?usp=sharing" target="_blank" rel="noreferrer noopener"><span class="kt-btn-inner-text">Descargar</span></a></div>



<p></p>



<p></p>



<p></p>
<p><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=https%3A%2F%2Freportingfinanciero.es%2Fanexando-datos-cuando-el-erp-almacena-la-informacion-de-cada-ano-en-una-tabla-distinta%2F&amp;linkname=Anexando%20datos%20cuando%20el%20ERP%20almacena%20la%20informaci%C3%B3n%20de%20cada%20a%C3%B1o%20en%20una%20tabla%20distinta." title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_email" href="https://www.addtoany.com/add_to/email?linkurl=https%3A%2F%2Freportingfinanciero.es%2Fanexando-datos-cuando-el-erp-almacena-la-informacion-de-cada-ano-en-una-tabla-distinta%2F&amp;linkname=Anexando%20datos%20cuando%20el%20ERP%20almacena%20la%20informaci%C3%B3n%20de%20cada%20a%C3%B1o%20en%20una%20tabla%20distinta." title="Email" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_telegram" href="https://www.addtoany.com/add_to/telegram?linkurl=https%3A%2F%2Freportingfinanciero.es%2Fanexando-datos-cuando-el-erp-almacena-la-informacion-de-cada-ano-en-una-tabla-distinta%2F&amp;linkname=Anexando%20datos%20cuando%20el%20ERP%20almacena%20la%20informaci%C3%B3n%20de%20cada%20a%C3%B1o%20en%20una%20tabla%20distinta." title="Telegram" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_whatsapp" href="https://www.addtoany.com/add_to/whatsapp?linkurl=https%3A%2F%2Freportingfinanciero.es%2Fanexando-datos-cuando-el-erp-almacena-la-informacion-de-cada-ano-en-una-tabla-distinta%2F&amp;linkname=Anexando%20datos%20cuando%20el%20ERP%20almacena%20la%20informaci%C3%B3n%20de%20cada%20a%C3%B1o%20en%20una%20tabla%20distinta." title="WhatsApp" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_x" href="https://www.addtoany.com/add_to/x?linkurl=https%3A%2F%2Freportingfinanciero.es%2Fanexando-datos-cuando-el-erp-almacena-la-informacion-de-cada-ano-en-una-tabla-distinta%2F&amp;linkname=Anexando%20datos%20cuando%20el%20ERP%20almacena%20la%20informaci%C3%B3n%20de%20cada%20a%C3%B1o%20en%20una%20tabla%20distinta." title="X" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Freportingfinanciero.es%2Fanexando-datos-cuando-el-erp-almacena-la-informacion-de-cada-ano-en-una-tabla-distinta%2F&amp;linkname=Anexando%20datos%20cuando%20el%20ERP%20almacena%20la%20informaci%C3%B3n%20de%20cada%20a%C3%B1o%20en%20una%20tabla%20distinta." title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_skype" href="https://www.addtoany.com/add_to/skype?linkurl=https%3A%2F%2Freportingfinanciero.es%2Fanexando-datos-cuando-el-erp-almacena-la-informacion-de-cada-ano-en-una-tabla-distinta%2F&amp;linkname=Anexando%20datos%20cuando%20el%20ERP%20almacena%20la%20informaci%C3%B3n%20de%20cada%20a%C3%B1o%20en%20una%20tabla%20distinta." title="Skype" rel="nofollow noopener" target="_blank"></a></p><p>La entrada <a href="https://reportingfinanciero.es/anexando-datos-cuando-el-erp-almacena-la-informacion-de-cada-ano-en-una-tabla-distinta/">Anexando datos cuando el ERP almacena la información de cada año en una tabla distinta.</a> se publicó primero en <a href="https://reportingfinanciero.es">reportingfinanciero.es</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Cómo filtrar datos a través de una lista en Power Query.</title>
		<link>https://reportingfinanciero.es/como-filtrar-datos-a-traves-de-una-lista-en-power-query/</link>
		
		<dc:creator><![CDATA[Javier San Juan]]></dc:creator>
		<pubDate>Thu, 18 Dec 2025 21:20:18 +0000</pubDate>
				<category><![CDATA[Finanzas]]></category>
		<category><![CDATA[Power Query]]></category>
		<guid isPermaLink="false">https://reportingfinanciero.es/?p=3295</guid>

					<description><![CDATA[<p>En el post de hoy vamos a ver una técnica para hacer filtros en Power Query de manera dinámica a través de una lista. ¿En qué escenarios nos puede ser útil?. Por ejemplo, si tenemos un grupo de empresas y queremos montar un informe de ventas para algunas de ellas. O si tenemos varios almacenes ... </p>
<p class="read-more-container"><a title="Cómo filtrar datos a través de una lista en Power Query." class="read-more button" href="https://reportingfinanciero.es/como-filtrar-datos-a-traves-de-una-lista-en-power-query/#more-3295" aria-label="Leer más sobre Cómo filtrar datos a través de una lista en Power Query.">Leer más</a></p>
<p>La entrada <a href="https://reportingfinanciero.es/como-filtrar-datos-a-traves-de-una-lista-en-power-query/">Cómo filtrar datos a través de una lista en Power Query.</a> se publicó primero en <a href="https://reportingfinanciero.es">reportingfinanciero.es</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>En el post de hoy vamos a ver una técnica para hacer filtros en Power Query de manera dinámica a través de una lista.</p>



<p><strong>¿En qué escenarios nos puede ser útil?. </strong></p>



<p>Por ejemplo, si tenemos un grupo de empresas y queremos montar un informe de ventas para algunas de ellas. O si tenemos varios almacenes y queremos realizar un informe de rotaciones, ventas o compras para ciertos almacenes (y que podamos cambiar el filtro de manera dinámica en una sola consulta).</p>



<p>Tendremos en Power Query una lista con las empresas/almacenes objeto del análisis y, si modificamos esa lista, se modificarán los filtros que se aplicarán en nuestras consultas.</p>



<p><strong>Veámoslo con un ejemplo.</strong></p>



<p>Supongamos que estamos elaborando un informe de ventas para nuestro grupo empresarial.</p>



<p>En primer lugar, nos conectamos a la base de datos del ERP, concretamente a la tabla que contiene el maestro de empresas, y filtramos las empresas de las que queremos hacer el informe (en nuestro ejemplo, las empresas 1 y 4):</p>



<figure class="wp-block-image size-full"><a href="https://reportingfinanciero.es/wp-content/uploads/2025/12/image-6.png"><img loading="lazy" decoding="async" width="677" height="268" src="https://reportingfinanciero.es/wp-content/uploads/2025/12/image-6.png" alt="" class="wp-image-3306" srcset="https://reportingfinanciero.es/wp-content/uploads/2025/12/image-6.png 677w, https://reportingfinanciero.es/wp-content/uploads/2025/12/image-6-300x119.png 300w" sizes="auto, (max-width: 677px) 100vw, 677px" /></a></figure>



<p></p>



<p>Posteriormente, para ya dejar preparada nuestra dimensión empresas en el modelo, nos quedamos únicamente con los campos CodigoEmpresa y Empresa (que contiene el nombre de la sociedad):</p>



<figure class="wp-block-image size-full"><a href="https://reportingfinanciero.es/wp-content/uploads/2025/12/image.png"><img loading="lazy" decoding="async" width="788" height="269" src="https://reportingfinanciero.es/wp-content/uploads/2025/12/image.png" alt="" class="wp-image-3297" srcset="https://reportingfinanciero.es/wp-content/uploads/2025/12/image.png 788w, https://reportingfinanciero.es/wp-content/uploads/2025/12/image-300x102.png 300w, https://reportingfinanciero.es/wp-content/uploads/2025/12/image-768x262.png 768w" sizes="auto, (max-width: 788px) 100vw, 788px" /></a></figure>



<p></p>



<p>A continuación, vamos a hacer referencia a esta consulta dimEmpresas para generar una nueva consulta con la que vamos a generar la lista que nos va a servir para filtrar todos los datos del resto de consultas.</p>



<figure class="wp-block-image size-full"><a href="https://reportingfinanciero.es/wp-content/uploads/2025/12/image-1.png"><img loading="lazy" decoding="async" width="633" height="571" src="https://reportingfinanciero.es/wp-content/uploads/2025/12/image-1.png" alt="" class="wp-image-3298" srcset="https://reportingfinanciero.es/wp-content/uploads/2025/12/image-1.png 633w, https://reportingfinanciero.es/wp-content/uploads/2025/12/image-1-300x271.png 300w" sizes="auto, (max-width: 633px) 100vw, 633px" /></a></figure>



<p></p>



<p>En la nueva consulta, nos vamos a quedar únicamente con la columna “CodigoEmpresa” y, desde el menú “Transformar” vamos a elegir la opción “Convertir en lista”:</p>



<figure class="wp-block-image size-full"><a href="https://reportingfinanciero.es/wp-content/uploads/2025/12/image-2.png"><img loading="lazy" decoding="async" width="800" height="403" src="https://reportingfinanciero.es/wp-content/uploads/2025/12/image-2.png" alt="" class="wp-image-3299" srcset="https://reportingfinanciero.es/wp-content/uploads/2025/12/image-2.png 800w, https://reportingfinanciero.es/wp-content/uploads/2025/12/image-2-300x151.png 300w, https://reportingfinanciero.es/wp-content/uploads/2025/12/image-2-768x387.png 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></a></figure>



<p></p>



<p>Cambiamos el nombre de la consulta a “Lista empresas” y la consulta quedaría de la siguiente forma (vemos que el icono de la consulta ha cambiado de un icono de tabla a un icono de lista):</p>



<figure class="wp-block-image size-full"><a href="https://reportingfinanciero.es/wp-content/uploads/2025/12/image-3.png"><img loading="lazy" decoding="async" width="596" height="264" src="https://reportingfinanciero.es/wp-content/uploads/2025/12/image-3.png" alt="" class="wp-image-3300" srcset="https://reportingfinanciero.es/wp-content/uploads/2025/12/image-3.png 596w, https://reportingfinanciero.es/wp-content/uploads/2025/12/image-3-300x133.png 300w" sizes="auto, (max-width: 596px) 100vw, 596px" /></a></figure>



<p></p>



<p>Ahora, para construir el modelo de ventas, vamos a imaginar que vamos a necesitar conectarnos, entre otras, a estas 6 tablas: CabeceraOfertaClientes, LineasOfertaClientes, CabeceraPedidoClientes, LineasPedidoClientes, CabeceraAlabaranClientes y LineasAlbaranClientes.</p>



<p>En cada una de las consultas, tendremos que filtrar los datos por el campo CodigoEmpresa, seleccionando únicamente las empresas 1 y 4.</p>



<p>Lo que vamos a conseguir con la técnica explicada en este post, es dejar vinculado ese filtro a nuestra consulta “Lista empresas”, de manera que si cambiamos el filtro de las empresas elegidas en la consulta “dimEmpresas”, como la consulta “Lista empresas” está referenciada a “dimEmpresas”, automáticamente cambien las empresas que se filtran en las 6 tablas relacionadas con las ventas.</p>



<p><strong>Vamos a ver el ejemplo con la tabla “CabeceraOfertaCliente”. </strong></p>



<p>Nos conectamos a la tabla y nos aparece su información:</p>



<figure class="wp-block-image size-full"><a href="https://reportingfinanciero.es/wp-content/uploads/2025/12/image-7.png"><img loading="lazy" decoding="async" width="900" height="422" src="https://reportingfinanciero.es/wp-content/uploads/2025/12/image-7.png" alt="" class="wp-image-3307" srcset="https://reportingfinanciero.es/wp-content/uploads/2025/12/image-7.png 900w, https://reportingfinanciero.es/wp-content/uploads/2025/12/image-7-300x141.png 300w, https://reportingfinanciero.es/wp-content/uploads/2025/12/image-7-768x360.png 768w" sizes="auto, (max-width: 900px) 100vw, 900px" /></a></figure>



<p></p>



<p>Ahora, si como planteábamos anteriormente, nuestro informe queremos que incluya únicamente a las empresas 1 y 4, iríamos al campo “CodigoEmpresa” y filtraríamos por los valores 1 y 4 como mostramos en la siguiente imagen:</p>



<figure class="wp-block-image size-full"><a href="https://reportingfinanciero.es/wp-content/uploads/2025/12/image-4.png"><img loading="lazy" decoding="async" width="661" height="675" src="https://reportingfinanciero.es/wp-content/uploads/2025/12/image-4.png" alt="" class="wp-image-3301" srcset="https://reportingfinanciero.es/wp-content/uploads/2025/12/image-4.png 661w, https://reportingfinanciero.es/wp-content/uploads/2025/12/image-4-294x300.png 294w" sizes="auto, (max-width: 661px) 100vw, 661px" /></a></figure>



<p></p>



<p></p>



<p>El código que nos genera este paso de filtrado es el siguiente:</p>



<p><strong>= Table.SelectRows(dbo_CabeceraOfertaCliente, each ([CodigoEmpresa] = 1 or [CodigoEmpresa] = 4))</strong></p>



<p>Lo que pasa es que el filtro se nos queda fijado de forma estática a las empresas 1 y 4.</p>



<p>Si quisiésemos más adelante cambiar las empresas filtradas, tendríamos que venir a este paso y modificarlo (en cada una de las consultas).</p>



<p>Lo que vamos a hacer, es que este filtro de los códigos de empresa dependa de la lista que hemos creado previamente, para que nos quede filtrado de forma dinámica por la lista creada: “Lista empresas”.</p>



<p>Para ello, tocaremos el código M de este paso de filas filtradas, y pondremos el siguiente código:</p>



<p><strong>= Table.SelectRows(dbo_CabeceraOfertaCliente, each List.Contains(#”Lista empresas”, [CodigoEmpresa]))</strong></p>



<p>Lo que estamos haciendo en el código, es indicar que el campo “CodigoEmpresa” se filtre por los valores que estén contenidos en la lista “Lista empresas”.</p>



<p>Si volvemos ahora al campo “CodigoEmpresa” y desplegamos la flecha del filtro, vemos que están únicamente disponibles las empresas de la lista, la 1 y la 4:</p>



<figure class="wp-block-image size-large"><a href="https://reportingfinanciero.es/wp-content/uploads/2025/12/image-8.png"><img loading="lazy" decoding="async" width="1024" height="599" src="https://reportingfinanciero.es/wp-content/uploads/2025/12/image-8-1024x599.png" alt="" class="wp-image-3308" srcset="https://reportingfinanciero.es/wp-content/uploads/2025/12/image-8-1024x599.png 1024w, https://reportingfinanciero.es/wp-content/uploads/2025/12/image-8-300x176.png 300w, https://reportingfinanciero.es/wp-content/uploads/2025/12/image-8-768x450.png 768w, https://reportingfinanciero.es/wp-content/uploads/2025/12/image-8.png 1090w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<p></p>



<p>Esta técnica de filtrado la usaríamos con el resto de tablas a incorporar al modelo de ventas: LineasOfertaClientes, CabeceraPedidoClientes, LineasPedidoClientes, CabeceraAlabaranClientes y LineasAlbaranClientes….</p>



<p>De esta forma, modificando la selección de las empresas a incorporar en el informe únicamente en la consulta “dimEmpresas”, conseguiremos modificar los códigos de empresa que están incluidos en la lista “Lista empresas” y, con ello, las empresas que se filtran en el resto de consultas que dependen de esa lista.</p>



<p>Espero que te sirva para tus futuros proyectos!!!</p>



<p>Seguimos 👊​</p>



<p></p>
<p><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=https%3A%2F%2Freportingfinanciero.es%2Fcomo-filtrar-datos-a-traves-de-una-lista-en-power-query%2F&amp;linkname=C%C3%B3mo%20filtrar%20datos%20a%20trav%C3%A9s%20de%20una%20lista%20en%20Power%20Query." title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_email" href="https://www.addtoany.com/add_to/email?linkurl=https%3A%2F%2Freportingfinanciero.es%2Fcomo-filtrar-datos-a-traves-de-una-lista-en-power-query%2F&amp;linkname=C%C3%B3mo%20filtrar%20datos%20a%20trav%C3%A9s%20de%20una%20lista%20en%20Power%20Query." title="Email" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_telegram" href="https://www.addtoany.com/add_to/telegram?linkurl=https%3A%2F%2Freportingfinanciero.es%2Fcomo-filtrar-datos-a-traves-de-una-lista-en-power-query%2F&amp;linkname=C%C3%B3mo%20filtrar%20datos%20a%20trav%C3%A9s%20de%20una%20lista%20en%20Power%20Query." title="Telegram" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_whatsapp" href="https://www.addtoany.com/add_to/whatsapp?linkurl=https%3A%2F%2Freportingfinanciero.es%2Fcomo-filtrar-datos-a-traves-de-una-lista-en-power-query%2F&amp;linkname=C%C3%B3mo%20filtrar%20datos%20a%20trav%C3%A9s%20de%20una%20lista%20en%20Power%20Query." title="WhatsApp" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_x" href="https://www.addtoany.com/add_to/x?linkurl=https%3A%2F%2Freportingfinanciero.es%2Fcomo-filtrar-datos-a-traves-de-una-lista-en-power-query%2F&amp;linkname=C%C3%B3mo%20filtrar%20datos%20a%20trav%C3%A9s%20de%20una%20lista%20en%20Power%20Query." title="X" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Freportingfinanciero.es%2Fcomo-filtrar-datos-a-traves-de-una-lista-en-power-query%2F&amp;linkname=C%C3%B3mo%20filtrar%20datos%20a%20trav%C3%A9s%20de%20una%20lista%20en%20Power%20Query." title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_skype" href="https://www.addtoany.com/add_to/skype?linkurl=https%3A%2F%2Freportingfinanciero.es%2Fcomo-filtrar-datos-a-traves-de-una-lista-en-power-query%2F&amp;linkname=C%C3%B3mo%20filtrar%20datos%20a%20trav%C3%A9s%20de%20una%20lista%20en%20Power%20Query." title="Skype" rel="nofollow noopener" target="_blank"></a></p><p>La entrada <a href="https://reportingfinanciero.es/como-filtrar-datos-a-traves-de-una-lista-en-power-query/">Cómo filtrar datos a través de una lista en Power Query.</a> se publicó primero en <a href="https://reportingfinanciero.es">reportingfinanciero.es</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Automatizando el control de asientos descuadrados</title>
		<link>https://reportingfinanciero.es/automatizando-el-control-de-asientos-descuadrados/</link>
		
		<dc:creator><![CDATA[antonio@gestion23.com]]></dc:creator>
		<pubDate>Mon, 02 Jun 2025 12:15:39 +0000</pubDate>
				<category><![CDATA[Finanzas]]></category>
		<category><![CDATA[Power Automate]]></category>
		<category><![CDATA[Power Query]]></category>
		<guid isPermaLink="false">https://reportingfinanciero.es/?p=3208</guid>

					<description><![CDATA[<p>📝 Uno de los puntos habituales a repasar cuando estamos revisando nuestros cierres contables es el que no haya ningún asiento descuadrado. ⚖️​Es decir, que se cumpla el principio de partida doble (si nos ponemos técnicos), o “las gallinas que entran por las que salen” si hablamos en lenguaje coloquial 😉 Los programas de contabilidad ... </p>
<p class="read-more-container"><a title="Automatizando el control de asientos descuadrados" class="read-more button" href="https://reportingfinanciero.es/automatizando-el-control-de-asientos-descuadrados/#more-3208" aria-label="Leer más sobre Automatizando el control de asientos descuadrados">Leer más</a></p>
<p>La entrada <a href="https://reportingfinanciero.es/automatizando-el-control-de-asientos-descuadrados/">Automatizando el control de asientos descuadrados</a> se publicó primero en <a href="https://reportingfinanciero.es">reportingfinanciero.es</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>📝 Uno de los puntos habituales a repasar cuando estamos revisando nuestros cierres contables es el que no haya ningún asiento descuadrado.</p>



<p>⚖️​Es decir, que se cumpla el principio de partida doble (si nos ponemos técnicos), o “las gallinas que entran por las que salen” si hablamos en lenguaje coloquial 😉</p>



<p>Los programas de contabilidad o ERPs suelen tener avisos que nos protegen ante errores al introducir asientos descuadrados.</p>



<p>En la siguiente imagen, muestro un mensaje que proporciona SAGE 200 Advanced cuando pretendo introducir un asiento descuadrado:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="wp-block-image">
<figure class="aligncenter size-full"><a href="https://reportingfinanciero.es/wp-content/uploads/2025/06/image.png"><img loading="lazy" decoding="async" width="776" height="448" src="https://reportingfinanciero.es/wp-content/uploads/2025/06/image.png" alt="" class="wp-image-3210" srcset="https://reportingfinanciero.es/wp-content/uploads/2025/06/image.png 776w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-300x173.png 300w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-768x443.png 768w" sizes="auto, (max-width: 776px) 100vw, 776px" /></a></figure>
</div>


<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<p><em>NOTA: Los pasos e imágenes que veremos en el post están basados en SAGE 200 Advanced.</em></p>



<p>No obstante, si el usuario pulsa sobre el botón “Sí”, el asiento se graba en la base de datos tan tranquilamente…🤔</p>



<p>Incluso hay muchos asientos que no les introduce ningún usuario manualmente, sino que se generan automáticamente desde algún proceso que tengamos configurado bien desde la versión estándar del programa, o alguna personalización que hayamos implementado (contabilización automática de facturas de venta/compra, control de riesgos por descuento de efectos, recepción de albaranes de compra…)</p>



<p>En esos casos también corremos el riesgo de que algún asiento automático entre al programa con algún descuadre por alguna incidencia que se haya saltado los controles…</p>



<p>Los programas suelen incluir también una opción para sacar un listado con los asientos descuadrados que se han introducido en el sistema.</p>



<p>En SAGE 200 Advanced la pantalla sería la siguiente (si tenemos la contabilidad de varias empresas en la interfaz de SAGE debemos ir cambiando de empresa para ir consultando la pantalla empresa por empresa, mientras que en Power BI podremos consultar todas las empresas al mismo tiempo):</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="wp-block-image">
<figure class="aligncenter size-full"><a href="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-1.png"><img loading="lazy" decoding="async" width="886" height="365" src="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-1.png" alt="" class="wp-image-3211" srcset="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-1.png 886w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-1-300x124.png 300w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-1-768x316.png 768w" sizes="auto, (max-width: 886px) 100vw, 886px" /></a></figure>
</div>


<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Vemos que en el asiento 15.314, del 15/04/2025, hay un descuadre de 201,25 €, ya que hay más gallinas que han entrado por el Debe de las que han salido por el Haber 😉.</p>



<p>Podemos comprobarlo entrando al asiento:</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="wp-block-image">
<figure class="aligncenter size-full"><a href="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-2.png"><img loading="lazy" decoding="async" width="886" height="345" src="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-2.png" alt="" class="wp-image-3212" srcset="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-2.png 886w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-2-300x117.png 300w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-2-768x299.png 768w" sizes="auto, (max-width: 886px) 100vw, 886px" /></a></figure>
</div>


<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<p>En el post de hoy vamos a ver cómo generar un proceso que nos compruebe periódicamente si hay algún asiento descuadrado y, en caso afirmativo, nos envíe un email avisándonos de la incidencia para poder corregirla.</p>



<p>Lo primero que vamos a hacer es entrar en Power BI y, a través del conector de SQL Server de Power Query, conectarnos a la base de datos del ERP, concretamente a la tabla “Movimientos”, que es donde se almacena la información de los apuntes contables:</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-3.png"><img loading="lazy" decoding="async" width="1024" height="789" src="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-3-1024x789.png" alt="" class="wp-image-3213" srcset="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-3-1024x789.png 1024w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-3-300x231.png 300w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-3-768x591.png 768w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-3.png 1122w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>
</div>


<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Nos quedamos únicamente con las siguientes columnas:</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-4.png"><img loading="lazy" decoding="async" width="1024" height="512" src="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-4-1024x512.png" alt="" class="wp-image-3214" srcset="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-4-1024x512.png 1024w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-4-300x150.png 300w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-4-768x384.png 768w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-4.png 1091w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>
</div>


<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Me voy a quedar a continuación únicamente con los asientos que sean del ejercicio actual o del anterior (de forma dinámica), porque entendemos que los periodos anteriores ya deberían estar cerrados y con la contabilidad revisada y bloqueada.&nbsp; Lo hacemos mediante el siguiente código M:</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-5.png"><img loading="lazy" decoding="async" width="1024" height="528" src="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-5-1024x528.png" alt="" class="wp-image-3215" srcset="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-5-1024x528.png 1024w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-5-300x155.png 300w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-5-768x396.png 768w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-5.png 1122w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>
</div>


<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<p>A partir de las columnas “CodigoEmpresa”, “Ejercicio” y “Asiento” (las selecciono en ese mismo orden con el “Control” pulsado) nos construimos el identificador único del asiento; ya que el campo “Asiento” se puede repetir para distintos ejercicios y códigos de empresa (resalto en amarillo en la imagen anterior que tenemos asientos de distintas empresas).</p>



<p>Lo hacemos a través de la opción “Transformar” =&gt; “Combinar columnas” y usamos el separador que queramos (yo suelo usar un guión bajo) y el nombre de la nueva columna (en mi caso “idAsiento”):</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-6.png"><img loading="lazy" decoding="async" width="1024" height="434" src="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-6-1024x434.png" alt="" class="wp-image-3216" srcset="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-6-1024x434.png 1024w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-6-300x127.png 300w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-6-768x325.png 768w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-6.png 1122w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>
</div>


<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Quedaría así la información:</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="wp-block-image">
<figure class="aligncenter size-full"><a href="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-7.png"><img loading="lazy" decoding="async" width="809" height="581" src="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-7.png" alt="" class="wp-image-3217" srcset="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-7.png 809w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-7-300x215.png 300w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-7-768x552.png 768w" sizes="auto, (max-width: 809px) 100vw, 809px" /></a></figure>
</div>


<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Como vemos, SAGE nos da el importe del apunte en la columna “ImporteAsiento” y en la columna “CargoAbono” nos indica si ese importe va al Debe o al Haber.</p>



<p>En el caso de otros ERPs nos aparecen los importes directamente separados en columnas de Debe y Haber.</p>



<p>Vamos a hacer esa separación a través de agregar nuevas columnas condicionales que nos den los importes de debe y haber por separado.</p>



<p>Muestro a continuación cómo sería la creación de la columna “Debe” y seguiríamos el mismo patrón para crear la del “Haber”:</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-8.png"><img loading="lazy" decoding="async" width="1024" height="412" src="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-8-1024x412.png" alt="" class="wp-image-3218" srcset="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-8-1024x412.png 1024w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-8-300x121.png 300w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-8-768x309.png 768w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-8.png 1122w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>
</div>


<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Con esos pasos ya tendría creadas las nuevas columnas:</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-9.png"><img loading="lazy" decoding="async" width="1024" height="457" src="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-9-1024x457.png" alt="" class="wp-image-3219" srcset="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-9-1024x457.png 1024w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-9-300x134.png 300w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-9-768x343.png 768w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-9.png 1122w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>
</div>


<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Ahora simplemente voy a darle formato Número Decimal Fijo a estas nuevas 2 columnas y voy a eliminar las columnas “ImporteAsiento” y “CargoAbono”, ya que ya no las voy a necesitar.</p>



<p>Llegaríamos a la siguiente situación:</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="wp-block-image">
<figure class="aligncenter size-full"><a href="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-10.png"><img loading="lazy" decoding="async" width="798" height="581" src="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-10.png" alt="" class="wp-image-3220" srcset="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-10.png 798w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-10-300x218.png 300w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-10-768x559.png 768w" sizes="auto, (max-width: 798px) 100vw, 798px" /></a></figure>
</div>


<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Lo siguiente que voy a hacer es agrupar los datos por el campo “idAsiento” para obtener el total de importe al Debe y total importe al Haber de cada uno de los asientos, ya que mi único objetivo es saber si están descuadrados (los datos vienen a granularidad de apunte contable y cada asiento contable puede tener N apuntes):</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-11.png"><img loading="lazy" decoding="async" width="1024" height="786" src="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-11-1024x786.png" alt="" class="wp-image-3221" srcset="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-11-1024x786.png 1024w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-11-300x230.png 300w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-11-768x589.png 768w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-11.png 1122w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>
</div>


<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Ahora voy a hacer una nueva columna calculada a la que voy a llamar “Saldo” y que calcularé como la resta de las columnas “Total_Debe” y “Total_Haber”. Tendré que seleccionar las 2 columnas con el Control en el orden indicado (primero Total_Debe y luego Total_Haber), y posteriormente seguir los pasos de la siguiente pantalla:</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-12.png"><img loading="lazy" decoding="async" width="1024" height="676" src="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-12-1024x676.png" alt="" class="wp-image-3222" srcset="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-12-1024x676.png 1024w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-12-300x198.png 300w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-12-768x507.png 768w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-12.png 1122w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>
</div>


<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<p>En la siguiente pantalla vemos los resultados de la nueva columna. Resalto en amarillo algunos valores que debería ser cero pero cuyo resultado no es exactamente cero. Como se aprecia en el valor marcado en azul, del origen nos vienen valores que no están correctamente redondeados, lo cual es el motivo de esos valores resaltados en amarillo:</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-13.png"><img loading="lazy" decoding="async" width="921" height="1024" src="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-13-921x1024.png" alt="" class="wp-image-3223" srcset="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-13-921x1024.png 921w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-13-270x300.png 270w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-13-768x854.png 768w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-13.png 1067w" sizes="auto, (max-width: 921px) 100vw, 921px" /></a></figure>
</div>


<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Vamos a modificar el nombre de la columna “Resta” por el de “Saldo” y modificamos el tipo de dato a la columna para ponerlo como “Numero decimal fijo” para resolver ese problema de los redondeos. Vemos en la siguiente pantalla que los mismos registros que en la pantalla anterior no aparecían con valor cero ahora sí que lo hacen gracias al cambio de tipo de dato:</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-14.png"><img loading="lazy" decoding="async" width="1024" height="602" src="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-14-1024x602.png" alt="" class="wp-image-3224" srcset="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-14-1024x602.png 1024w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-14-300x176.png 300w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-14-768x451.png 768w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-14.png 1050w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>
</div>


<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Si filtramos los valores de la columna “Saldo” por los que sean distintos a cero, veremos cómo pasamos a tener un único registro en la tabla, que es precisamente el que nos marcaba la interfaz del ERP, el asiento nº 15314 del ejercicio 2025 de la empresa 1:</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-15.png"><img loading="lazy" decoding="async" width="1024" height="535" src="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-15-1024x535.png" alt="" class="wp-image-3225" srcset="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-15-1024x535.png 1024w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-15-300x157.png 300w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-15-768x401.png 768w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-15.png 1062w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>
</div>


<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Por último, eliminaría las columnas Total_Debe y Total_Haber, dado que ya no las necesito, y pulso sobre cerrar y aplicar para llevarme los datos desde Power Query a Power BI.</p>



<p>Vemos a continuación los datos desde la vista de tabla de Power BI Desktop:</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="wp-block-image">
<figure class="aligncenter size-full"><a href="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-16.png"><img loading="lazy" decoding="async" width="940" height="514" src="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-16.png" alt="" class="wp-image-3226" srcset="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-16.png 940w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-16-300x164.png 300w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-16-768x420.png 768w" sizes="auto, (max-width: 940px) 100vw, 940px" /></a></figure>
</div>


<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Tras esto, haremos una sencilla medida DAX que lo que hará será contar el número de filas de nuestra tabla y que nos dará como el resultado el número de asientos que tenemos descuadrados en nuestra contabilidad. Vemos a continuación el resultado sobre un visual de tarjeta:</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="wp-block-image">
<figure class="aligncenter size-full"><a href="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-17.png"><img loading="lazy" decoding="async" width="761" height="628" src="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-17.png" alt="" class="wp-image-3227" srcset="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-17.png 761w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-17-300x248.png 300w" sizes="auto, (max-width: 761px) 100vw, 761px" /></a></figure>
</div>


<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Ahora lo que vamos a hacer es obtener la consulta DAX que genera el objeto visual para después poder pasársela a Power Automate.</p>



<p>Para ello, vamos el menú “Ver” =&gt; “Analizador de rendimiento”. Pulsamos sobre “Actualizar objetos visuales” y copiamos la consulta con el botón “Copiar consulta”:</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-18.png"><img loading="lazy" decoding="async" width="1024" height="292" src="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-18-1024x292.png" alt="" class="wp-image-3228" srcset="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-18-1024x292.png 1024w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-18-300x86.png 300w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-18-768x219.png 768w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-18.png 1122w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>
</div>


<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<p>El texto que se nos copia en el portapapeles es el siguiente:</p>



<p>// DAX Query</p>



<p>EVALUATE</p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ROW(</p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; «v__Asientos_Descuadrados», &#8216;Movimientos'[# Asientos Descuadrados]</p>



<p>)</p>



<p>Ahora lo que vamos a hacer es publicar nuestro informe en el servicio de Power BI desde el botón “Publicar”, y seleccionar el área de trabajo donde queramos publicarlo.</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-19.png"><img loading="lazy" decoding="async" width="1024" height="924" src="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-19-1024x924.png" alt="" class="wp-image-3229" srcset="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-19-1024x924.png 1024w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-19-300x271.png 300w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-19-768x693.png 768w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-19.png 1122w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>
</div>


<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Una vez publicado, configuraremos la sincronización con la puerta de enlace al servidor donde esté la base de datos del ERP; y estableceremos las actualizaciones programadas que consideremos (en nuestro caso una actualización diaria a las 01:00 a.m.).</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-20.png"><img loading="lazy" decoding="async" width="1024" height="426" src="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-20-1024x426.png" alt="" class="wp-image-3230" srcset="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-20-1024x426.png 1024w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-20-300x125.png 300w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-20-768x320.png 768w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-20.png 1122w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>
</div>


<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<p>A continuación, nos vamos a Power Automate y creamos un flujo de nube programado que se ejecute todos los días a las 02:00 a.m. (como hemos indicado en el servicio de Power BI que el informe se actualice a las 01:00 a.m., a las 02:00 a.m. ya nos aseguremos que el informe esté actualizado y que podamos “pillar” a los nuevos asientos descuadrados):</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-21.png"><img loading="lazy" decoding="async" width="1024" height="549" src="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-21-1024x549.png" alt="" class="wp-image-3231" srcset="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-21-1024x549.png 1024w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-21-300x161.png 300w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-21-768x411.png 768w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-21.png 1122w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>
</div>


<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<p>A continuación, añadimos una nueva acción al flujo y elegimos la acción de ejecutar una consulta contra un conjunto de datos de Power BI.</p>



<p>Debemos seleccionar el área de trabajo y el modelo semántico y, posteriormente, pegar en el “Texto de la consulta” la consulta DAX que copiamos en el portapapeles cuando seguimos los pasos de ver el analizador de rendimiento de Power BI Desktop:</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-22.png"><img loading="lazy" decoding="async" width="1024" height="533" src="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-22-1024x533.png" alt="" class="wp-image-3232" srcset="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-22-1024x533.png 1024w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-22-300x156.png 300w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-22-768x400.png 768w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-22.png 1122w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>
</div>


<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Tras ello, añadimos una nueva acción y elegimos la acción “Seleccionar”.&nbsp;</p>



<p>En el apartado “Desde” pulsamos sobre el icono de un rayo que nos permite obtener datos del paso anterior:</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-23.png"><img loading="lazy" decoding="async" width="1024" height="438" src="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-23-1024x438.png" alt="" class="wp-image-3233" srcset="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-23-1024x438.png 1024w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-23-300x128.png 300w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-23-768x329.png 768w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-23.png 1122w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>
</div>


<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Elegimos la opción “Primeras filas de la tabla”:</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="wp-block-image">
<figure class="aligncenter size-full"><a href="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-24.png"><img loading="lazy" decoding="async" width="705" height="292" src="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-24.png" alt="" class="wp-image-3234" srcset="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-24.png 705w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-24-300x124.png 300w" sizes="auto, (max-width: 705px) 100vw, 705px" /></a></figure>
</div>


<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Dejamos configurados los campos de la opción “Mapa” de la siguiente forma:</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="wp-block-image">
<figure class="aligncenter size-full"><a href="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-25.png"><img loading="lazy" decoding="async" width="876" height="426" src="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-25.png" alt="" class="wp-image-3235" srcset="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-25.png 876w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-25-300x146.png 300w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-25-768x373.png 768w" sizes="auto, (max-width: 876px) 100vw, 876px" /></a></figure>
</div>


<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<p>A continuación, añadimos un nuevo paso con la acción “Redactar” e introducimos la siguiente expresión desde el botón con las iniciales “fx”:</p>



<p><strong>first(first(body(&#8216;Seleccionar&#8217;))[&#8216;#Asientos&#8217;])[&#8216;[v__Asientos_Descuadrados]&#8217;]</strong></p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-26.png"><img loading="lazy" decoding="async" width="1024" height="872" src="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-26-1024x872.png" alt="" class="wp-image-3236" srcset="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-26-1024x872.png 1024w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-26-300x255.png 300w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-26-768x654.png 768w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-26.png 1122w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>
</div>


<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<p>‘Seleccionar’ hace referencia al nombre del paso anterior del flujo de Power Automate.</p>



<p>‘#Asientos’ es el nombre que hemos dado al parámetro en la sección “Mapa” de la imagen del paso anterior.</p>



<p>&#8216;[v__Asientos_Descuadrados]&#8217; nos viene establecido desde la consulta DAX del objeto visual de tarjeta.</p>



<p>Este último paso ya nos devuelve como Output el valor de la tarjeta, en nuestro caso, la salida es el valor “1”. Lo podemos comprobar si ejecutamos el flujo manualmente y comprobamos los resultados:</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-27.png"><img loading="lazy" decoding="async" width="663" height="1024" src="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-27-663x1024.png" alt="" class="wp-image-3237" srcset="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-27-663x1024.png 663w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-27-194x300.png 194w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-27-768x1186.png 768w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-27.png 887w" sizes="auto, (max-width: 663px) 100vw, 663px" /></a></figure>
</div>


<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<p>A continuación, añadimos un nuevo paso de condición con el objetivo de que si el valor de salida del paso anterior (que es el valor de la tarjeta de Power BI) es mayor que cero, nos envíe un email de alerta para que sepamos que hay algún asiento descuadrado:</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-28.png"><img loading="lazy" decoding="async" width="1024" height="975" src="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-28-1024x975.png" alt="" class="wp-image-3238" srcset="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-28-1024x975.png 1024w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-28-300x286.png 300w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-28-768x731.png 768w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-28.png 1086w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>
</div>


<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="wp-block-image">
<figure class="aligncenter size-full"><a href="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-29.png"><img loading="lazy" decoding="async" width="776" height="425" src="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-29.png" alt="" class="wp-image-3239" srcset="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-29.png 776w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-29-300x164.png 300w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-29-768x421.png 768w" sizes="auto, (max-width: 776px) 100vw, 776px" /></a></figure>
</div>


<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Posteriormente, indicamos en si se cumple la condición, envíe un email al destinatario que indiquemos y en el cuerpo del email añadimos el nº de asientos descuadrados a través de la salida del paso “Redactar”:</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-30.png"><img loading="lazy" decoding="async" width="1024" height="508" src="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-30-1024x508.png" alt="" class="wp-image-3240" srcset="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-30-1024x508.png 1024w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-30-300x149.png 300w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-30-768x381.png 768w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-30.png 1122w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>
</div>


<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Ya lo tendríamos todo preparado….</p>



<p>Falta ver que todo funcione y a continuación os muestro la prueba de que puntualmente a las 02:00, tenía un email en mi buzón de entrada:</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-31.png"><img loading="lazy" decoding="async" width="1024" height="409" src="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-31-1024x409.png" alt="" class="wp-image-3241" srcset="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-31-1024x409.png 1024w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-31-300x120.png 300w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-31-768x307.png 768w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-31.png 1122w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>
</div>


<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Podríamos adaptar el proceso si queremos incluir en el aviso las cuentas contables que intervienen en los apuntes de cada asiento, o incluso los conceptos, y enviar por email una tabla que represente el asiento tal y como lo vemos en el ERP.</p>



<p>Por simplificarlo lo hemos dejado en una notificación que nos indique que hay algún asiento descuadrado y ya con ese aviso iremos nosotros a ver la pantalla de descuadres al ERP y modificaremos los errores que detectemos.</p>



<p>También podemos incorporar a Power BI una sencilla tabla con los asientos de Power BI y comprobarlos desde nuestro informe en Power BI:</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="wp-block-image">
<figure class="aligncenter size-full"><a href="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-32.png"><img loading="lazy" decoding="async" width="472" height="209" src="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-32.png" alt="" class="wp-image-3242" srcset="https://reportingfinanciero.es/wp-content/uploads/2025/06/image-32.png 472w, https://reportingfinanciero.es/wp-content/uploads/2025/06/image-32-300x133.png 300w" sizes="auto, (max-width: 472px) 100vw, 472px" /></a></figure>
</div>


<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Sencillo y realmente útil, ¿no crees?.</p>



<p>La verdad es que esta combinación de Power Automate y Power BI es realmente potente y es uno de los desafíos en los que quiero centrarme en el corto plazo.</p>



<p>Veremos a dónde nos lleva y, como siempre, os iré compartiendo nuevos retos y funcionalidades.</p>



<p>Seguimos!!!&nbsp;👊</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>
<p><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=https%3A%2F%2Freportingfinanciero.es%2Fautomatizando-el-control-de-asientos-descuadrados%2F&amp;linkname=Automatizando%20el%20control%20de%20asientos%20descuadrados" title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_email" href="https://www.addtoany.com/add_to/email?linkurl=https%3A%2F%2Freportingfinanciero.es%2Fautomatizando-el-control-de-asientos-descuadrados%2F&amp;linkname=Automatizando%20el%20control%20de%20asientos%20descuadrados" title="Email" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_telegram" href="https://www.addtoany.com/add_to/telegram?linkurl=https%3A%2F%2Freportingfinanciero.es%2Fautomatizando-el-control-de-asientos-descuadrados%2F&amp;linkname=Automatizando%20el%20control%20de%20asientos%20descuadrados" title="Telegram" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_whatsapp" href="https://www.addtoany.com/add_to/whatsapp?linkurl=https%3A%2F%2Freportingfinanciero.es%2Fautomatizando-el-control-de-asientos-descuadrados%2F&amp;linkname=Automatizando%20el%20control%20de%20asientos%20descuadrados" title="WhatsApp" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_x" href="https://www.addtoany.com/add_to/x?linkurl=https%3A%2F%2Freportingfinanciero.es%2Fautomatizando-el-control-de-asientos-descuadrados%2F&amp;linkname=Automatizando%20el%20control%20de%20asientos%20descuadrados" title="X" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Freportingfinanciero.es%2Fautomatizando-el-control-de-asientos-descuadrados%2F&amp;linkname=Automatizando%20el%20control%20de%20asientos%20descuadrados" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_skype" href="https://www.addtoany.com/add_to/skype?linkurl=https%3A%2F%2Freportingfinanciero.es%2Fautomatizando-el-control-de-asientos-descuadrados%2F&amp;linkname=Automatizando%20el%20control%20de%20asientos%20descuadrados" title="Skype" rel="nofollow noopener" target="_blank"></a></p><p>La entrada <a href="https://reportingfinanciero.es/automatizando-el-control-de-asientos-descuadrados/">Automatizando el control de asientos descuadrados</a> se publicó primero en <a href="https://reportingfinanciero.es">reportingfinanciero.es</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Filtro de fecha dinámico</title>
		<link>https://reportingfinanciero.es/filtro-de-fecha-dinamico/</link>
		
		<dc:creator><![CDATA[antonio@gestion23.com]]></dc:creator>
		<pubDate>Mon, 23 Dec 2024 22:58:22 +0000</pubDate>
				<category><![CDATA[Calendario]]></category>
		<category><![CDATA[Power Query]]></category>
		<guid isPermaLink="false">https://reportingfinanciero.es/?p=3108</guid>

					<description><![CDATA[<p>En el post de hoy voy a resolver una duda que me plantearon recientemente en una formación. El reto era conseguir que, en un filtro de fecha, al abrir el informe salga seleccionada por defecto siempre la última fecha de un campo de una tabla, pudiendo el usuario modificar la fecha en el filtro si ... </p>
<p class="read-more-container"><a title="Filtro de fecha dinámico" class="read-more button" href="https://reportingfinanciero.es/filtro-de-fecha-dinamico/#more-3108" aria-label="Leer más sobre Filtro de fecha dinámico">Leer más</a></p>
<p>La entrada <a href="https://reportingfinanciero.es/filtro-de-fecha-dinamico/">Filtro de fecha dinámico</a> se publicó primero en <a href="https://reportingfinanciero.es">reportingfinanciero.es</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>En el post de hoy voy a resolver una duda que me plantearon recientemente en una formación.</p>



<p>El reto era conseguir que, en un filtro de fecha, al abrir el informe salga seleccionada por defecto siempre la última fecha de un campo de una tabla, pudiendo el usuario modificar la fecha en el filtro si así lo necesita.</p>



<p>La técnica que vamos a utilizar se la vi por primera vez al maestro Francisco Mullor en una duda que resolvió en el grupo de Telegram de Power BI Español, y me vino de perlas para resolver este reto. Gracias, Fran 😉</p>



<p>Vamos a simular que estamos ante un informe de ventas y queremos que nos aparezca filtrada por defecto la fecha de la última venta.</p>



<p>Para ello, partimos de una sencilla tabla de hechos en la que tenemos una columna con la fecha de la venta, y otra con el importe:</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="wp-block-image">
<figure class="aligncenter size-full"><a href="https://reportingfinanciero.es/wp-content/uploads/2024/12/Imagen-1-1.png"><img loading="lazy" decoding="async" width="364" height="327" src="https://reportingfinanciero.es/wp-content/uploads/2024/12/Imagen-1-1.png" alt="" class="wp-image-3111" srcset="https://reportingfinanciero.es/wp-content/uploads/2024/12/Imagen-1-1.png 364w, https://reportingfinanciero.es/wp-content/uploads/2024/12/Imagen-1-1-300x270.png 300w" sizes="auto, (max-width: 364px) 100vw, 364px" /></a></figure>
</div>


<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Por otro lado, vamos a tener una dimensión calendario simple, en la que tendremos únicamente creada una lista de fechas desde el 01/01/2023 al 31/12/2024 y añadiremos las columnas Año, Mes y Día:</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="wp-block-image">
<figure class="aligncenter size-full"><a href="https://reportingfinanciero.es/wp-content/uploads/2024/12/Imagen-2.png"><img loading="lazy" decoding="async" width="673" height="307" src="https://reportingfinanciero.es/wp-content/uploads/2024/12/Imagen-2.png" alt="" class="wp-image-3112" srcset="https://reportingfinanciero.es/wp-content/uploads/2024/12/Imagen-2.png 673w, https://reportingfinanciero.es/wp-content/uploads/2024/12/Imagen-2-300x137.png 300w" sizes="auto, (max-width: 673px) 100vw, 673px" /></a></figure>
</div>


<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Lo que haremos a continuación, será crear una consulta nueva en la que registrar el valor de la fecha máxima en la que ha habido ventas.</p>



<p>Para ello, vamos en Power Query a Nuevo Origen =&gt; Consulta en blanco , y pegamos en la barra de fórmulas la siguiente instrucción:</p>



<p>= List.Max(factVentas[Fecha Venta])</p>



<p>Nos devuelve el valor buscado, que en nuestro ejemplo sería el 10/11/2024:</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="wp-block-image">
<figure class="aligncenter size-full"><a href="https://reportingfinanciero.es/wp-content/uploads/2024/12/Imagen-3.png"><img loading="lazy" decoding="async" width="622" height="153" src="https://reportingfinanciero.es/wp-content/uploads/2024/12/Imagen-3.png" alt="" class="wp-image-3113" srcset="https://reportingfinanciero.es/wp-content/uploads/2024/12/Imagen-3.png 622w, https://reportingfinanciero.es/wp-content/uploads/2024/12/Imagen-3-300x74.png 300w" sizes="auto, (max-width: 622px) 100vw, 622px" /></a></figure>
</div>


<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Llamamos a esta consulta “FechaMax”.</p>



<p>El siguiente paso va a ser crear en nuestra tabla calendario una nueva columna personalizada en la que vamos a indicar que si la columna “Fecha” de nuestra tabla calendario es igual a la fecha calculada en la consulta “FechaMax”, indique el texto “Fecha Máxima” y, de lo contrario, nos indique el valor del campo “Fecha”.</p>



<p>El código M quedaría así:</p>



<p class="has--font-size">= Table.AddColumn(DíaInsertado, “FechaFiltro“, each if [Fecha] = FechaMax then “Fecha Máxima“ else [Fecha])</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="wp-block-image">
<figure class="aligncenter size-full"><a href="https://reportingfinanciero.es/wp-content/uploads/2024/12/Imagen-4.png"><img loading="lazy" decoding="async" width="840" height="313" src="https://reportingfinanciero.es/wp-content/uploads/2024/12/Imagen-4.png" alt="" class="wp-image-3114" srcset="https://reportingfinanciero.es/wp-content/uploads/2024/12/Imagen-4.png 840w, https://reportingfinanciero.es/wp-content/uploads/2024/12/Imagen-4-300x112.png 300w, https://reportingfinanciero.es/wp-content/uploads/2024/12/Imagen-4-768x286.png 768w" sizes="auto, (max-width: 840px) 100vw, 840px" /></a></figure>
</div>


<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Como puede observarse, la nueva columna a la que hemos llamado “FechaFiltro” nos muestra el valor “Fecha Máxima” para el día 10/11/2024, que es el valor de la última fecha en la que hay ventas, y para el resto de días nos refleja el valor de la fecha.</p>



<p>A esta columna le daremos tipo de dato texto.</p>



<p>A continuación, vamos a crear una nueva columna personalizada en nuestra dimensión calendario que tendrá el objetivo de poder ordenar la columna de tipo texto del paso anterior.</p>



<p>Para ello, generaremos el siguiente código M:</p>



<p>= Table.AddColumn(#“Tipo cambiado“, “idFecha“, each [Año]*10000+[Mes]*100+[Día])</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="wp-block-image">
<figure class="aligncenter size-full"><a href="https://reportingfinanciero.es/wp-content/uploads/2024/12/Imagen-5.png"><img loading="lazy" decoding="async" width="1001" height="327" src="https://reportingfinanciero.es/wp-content/uploads/2024/12/Imagen-5.png" alt="" class="wp-image-3115" srcset="https://reportingfinanciero.es/wp-content/uploads/2024/12/Imagen-5.png 1001w, https://reportingfinanciero.es/wp-content/uploads/2024/12/Imagen-5-300x98.png 300w, https://reportingfinanciero.es/wp-content/uploads/2024/12/Imagen-5-768x251.png 768w" sizes="auto, (max-width: 1001px) 100vw, 1001px" /></a></figure>
</div>


<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<p>A este nuevo campo le damos formato número entero.</p>



<p>Ya habríamos hecho todos los preparativos en Power Query y podríamos darle a “Cerrar y aplicar” para pasar a Power BI.</p>



<p>El siguiente paso va a ser ordenar la columna “FechaFiltro” por la columna “idFecha” para que la ordenación del campo que es texto sea por el orden natural del calendario:</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="wp-block-image">
<figure class="aligncenter size-large"><a href="https://reportingfinanciero.es/wp-content/uploads/2024/12/Imagen-6.png"><img loading="lazy" decoding="async" width="1024" height="371" src="https://reportingfinanciero.es/wp-content/uploads/2024/12/Imagen-6-1024x371.png" alt="" class="wp-image-3116" srcset="https://reportingfinanciero.es/wp-content/uploads/2024/12/Imagen-6-1024x371.png 1024w, https://reportingfinanciero.es/wp-content/uploads/2024/12/Imagen-6-300x109.png 300w, https://reportingfinanciero.es/wp-content/uploads/2024/12/Imagen-6-768x278.png 768w, https://reportingfinanciero.es/wp-content/uploads/2024/12/Imagen-6.png 1117w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>
</div>


<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Por último, generaremos una medida que nos calcule las ventas (un simple SUM de la columna Importe de la tabla de hechos):&nbsp;</p>



<p>Ventas = SUM(factVentas[Importe])</p>



<p>A continuación, creamos dos visuales en nuestro lienzo:</p>



<p>1.- Una tabla con el campo “Fecha” de la dimensión calendario y la medida Ventas que acabamos de crear.</p>



<p>2.- Un filtro con el campo “FechaFiltro” de nuestra dimensión calendario (el que es de tipo texto).</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="wp-block-image">
<figure class="aligncenter size-full"><a href="https://reportingfinanciero.es/wp-content/uploads/2024/12/Imagen-7.png"><img loading="lazy" decoding="async" width="692" height="391" src="https://reportingfinanciero.es/wp-content/uploads/2024/12/Imagen-7.png" alt="" class="wp-image-3117" srcset="https://reportingfinanciero.es/wp-content/uploads/2024/12/Imagen-7.png 692w, https://reportingfinanciero.es/wp-content/uploads/2024/12/Imagen-7-300x170.png 300w" sizes="auto, (max-width: 692px) 100vw, 692px" /></a></figure>
</div>


<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Si en el segmentador de FechaFiltro vamos a buscar la fecha de la venta máxima (10/11/2024) vemos que nos aparece el texto “Fecha Máxima”:</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="wp-block-image">
<figure class="aligncenter size-full"><a href="https://reportingfinanciero.es/wp-content/uploads/2024/12/Imagen-8.png"><img loading="lazy" decoding="async" width="696" height="399" src="https://reportingfinanciero.es/wp-content/uploads/2024/12/Imagen-8.png" alt="" class="wp-image-3118" srcset="https://reportingfinanciero.es/wp-content/uploads/2024/12/Imagen-8.png 696w, https://reportingfinanciero.es/wp-content/uploads/2024/12/Imagen-8-300x172.png 300w" sizes="auto, (max-width: 696px) 100vw, 696px" /></a></figure>
</div>


<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Y si lo seleccionamos, vemos como nos filtra correctamente la fecha del 10/11/2024 en el visual de tabla:</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="wp-block-image">
<figure class="aligncenter size-full"><a href="https://reportingfinanciero.es/wp-content/uploads/2024/12/Imagen-9-1.png"><img loading="lazy" decoding="async" width="678" height="328" src="https://reportingfinanciero.es/wp-content/uploads/2024/12/Imagen-9-1.png" alt="" class="wp-image-3121" srcset="https://reportingfinanciero.es/wp-content/uploads/2024/12/Imagen-9-1.png 678w, https://reportingfinanciero.es/wp-content/uploads/2024/12/Imagen-9-1-300x145.png 300w" sizes="auto, (max-width: 678px) 100vw, 678px" /></a></figure>
</div>


<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<p></p>



<p>Lo bueno de esto es que, en futuras actualizaciones, el filtro de “Fecha Máxima” se irá moviendo en función de la última venta que haya en nuestra tabla de hechos, y nos aparecerá filtrada por defecto esa nueva fecha.</p>



<p>Otro requisito habitual es tener filtrado por defecto el día actual (el día de hoy en modo dinámico).&nbsp;</p>



<p>Para ello, la técnica es la misma, solo que en el paso donde creábamos la consulta “FechaMax” para quedarnos con el valor de la fecha máxima en la que había habido venta, ahora buscaríamos conseguir el valor de la fecha de “hoy” de forma dinámica, lo que conseguiríamos con el siguiente código M en la barra de fórmulas de la consulta:</p>



<p>= Date.From(DateTime.LocalNow())</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="wp-block-image">
<figure class="aligncenter size-full"><a href="https://reportingfinanciero.es/wp-content/uploads/2024/12/Imagen-10.png"><img loading="lazy" decoding="async" width="567" height="61" src="https://reportingfinanciero.es/wp-content/uploads/2024/12/Imagen-10.png" alt="" class="wp-image-3120" srcset="https://reportingfinanciero.es/wp-content/uploads/2024/12/Imagen-10.png 567w, https://reportingfinanciero.es/wp-content/uploads/2024/12/Imagen-10-300x32.png 300w" sizes="auto, (max-width: 567px) 100vw, 567px" /></a><figcaption class="wp-element-caption"><em><strong>El 17/12/2024 es la fecha en la que se preparó el material de este post</strong></em>.</figcaption></figure>
</div>


<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<p>El resto de pasos serían idénticos a lo ya explicado anteriormente.</p>



<p>Cada vez que se actualizase el informe, se recalcularía la fecha actual y se modificaría el filtro seleccionado.</p>



<p>Te dejo en el siguiente enlace de descarga el pbix para que puedas revisar el paso a paso:</p>



<div class="wp-block-kadence-advancedbtn kb-buttons-wrap kb-btns3108_c5c540-5e"><a class="kb-button kt-button button kb-btn3108_734cc9-8e kt-btn-size-standard kt-btn-width-type-auto kb-btn-global-inherit kt-btn-has-text-true kt-btn-has-svg-false  wp-block-button__link wp-block-kadence-singlebtn" href="https://reportingfinanciero.es/wp-content/uploads/2024/12/Filtro-fecha-dinamico-fecha-maxima.pbix"><span class="kt-btn-inner-text">Descargar</span></a></div>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Espero que te haya resultado útil y puedas rescatarlo si se te plantea este requisito en el futuro!!!</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>
<p><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=https%3A%2F%2Freportingfinanciero.es%2Ffiltro-de-fecha-dinamico%2F&amp;linkname=Filtro%20de%20fecha%20din%C3%A1mico" title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_email" href="https://www.addtoany.com/add_to/email?linkurl=https%3A%2F%2Freportingfinanciero.es%2Ffiltro-de-fecha-dinamico%2F&amp;linkname=Filtro%20de%20fecha%20din%C3%A1mico" title="Email" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_telegram" href="https://www.addtoany.com/add_to/telegram?linkurl=https%3A%2F%2Freportingfinanciero.es%2Ffiltro-de-fecha-dinamico%2F&amp;linkname=Filtro%20de%20fecha%20din%C3%A1mico" title="Telegram" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_whatsapp" href="https://www.addtoany.com/add_to/whatsapp?linkurl=https%3A%2F%2Freportingfinanciero.es%2Ffiltro-de-fecha-dinamico%2F&amp;linkname=Filtro%20de%20fecha%20din%C3%A1mico" title="WhatsApp" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_x" href="https://www.addtoany.com/add_to/x?linkurl=https%3A%2F%2Freportingfinanciero.es%2Ffiltro-de-fecha-dinamico%2F&amp;linkname=Filtro%20de%20fecha%20din%C3%A1mico" title="X" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Freportingfinanciero.es%2Ffiltro-de-fecha-dinamico%2F&amp;linkname=Filtro%20de%20fecha%20din%C3%A1mico" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_skype" href="https://www.addtoany.com/add_to/skype?linkurl=https%3A%2F%2Freportingfinanciero.es%2Ffiltro-de-fecha-dinamico%2F&amp;linkname=Filtro%20de%20fecha%20din%C3%A1mico" title="Skype" rel="nofollow noopener" target="_blank"></a></p><p>La entrada <a href="https://reportingfinanciero.es/filtro-de-fecha-dinamico/">Filtro de fecha dinámico</a> se publicó primero en <a href="https://reportingfinanciero.es">reportingfinanciero.es</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Reparto presupuesto mensual a nivel diario</title>
		<link>https://reportingfinanciero.es/reparto-presupuesto-mensual-a-nivel-diario/</link>
		
		<dc:creator><![CDATA[antonio@gestion23.com]]></dc:creator>
		<pubDate>Wed, 03 Jul 2024 17:27:31 +0000</pubDate>
				<category><![CDATA[Finanzas]]></category>
		<category><![CDATA[Power Query]]></category>
		<guid isPermaLink="false">https://reportingfinanciero.es/?p=2805</guid>

					<description><![CDATA[<p>En la entrada de hoy te voy a mostrar cómo utilizo Power Query a la hora de elaborar el presupuesto de ventas. Es habitual que, desde el área comercial, nos envíen los presupuestos de ventas mensualizados para que desde el departamento financiero metamos los datos en la coctelera con la que elaboramos el presupuesto global ... </p>
<p class="read-more-container"><a title="Reparto presupuesto mensual a nivel diario" class="read-more button" href="https://reportingfinanciero.es/reparto-presupuesto-mensual-a-nivel-diario/#more-2805" aria-label="Leer más sobre Reparto presupuesto mensual a nivel diario">Leer más</a></p>
<p>La entrada <a href="https://reportingfinanciero.es/reparto-presupuesto-mensual-a-nivel-diario/">Reparto presupuesto mensual a nivel diario</a> se publicó primero en <a href="https://reportingfinanciero.es">reportingfinanciero.es</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>En la entrada de hoy te voy a mostrar cómo utilizo <strong>Power Query</strong> a la hora de elaborar el <strong>presupuesto de ventas</strong>.</p>



<p>Es habitual que, desde el área comercial, nos envíen los presupuestos de ventas mensualizados para que desde el departamento financiero metamos los datos en la coctelera con la que elaboramos el presupuesto global de la compañía.</p>



<p>A nivel de cierres financieros, con tener las ventas con esa granularidad mensual es suficiente, ya que los cierres contables los realizamos, a lo sumo, con periodicidad mensual.</p>



<p>El problema viene cuando queremos utilizar el presupuesto de ventas para nuestras reuniones periódicas de seguimiento de la evolución de las ventas.</p>



<p>Lo habitual en estas reuniones es hacer una comparativa de nuestras ventas tanto contra periodos anteriores como contra el presupuesto.&nbsp; Y ese seguimiento, en la práctica, se hace ya no solo a nivel semanal, sino que la parte comercial y la gerencia suelen revisar estos datos a nivel diario (incluso varias veces al día si me apuras 😜).</p>



<p>Por ello, para crear esos reportes de seguimiento de ventas, necesitamos trabajar el presupuesto mensualizado que nos llega desde el área comercial y repartir ese presupuesto a <strong>granularidad diaria</strong>.</p>



<p>Vamos a ver a continuación cómo Power Query nos puede facilitar la vida para hacer ese trabajo de reparto:</p>



<p>Partimos de una tabla en la que nos envían el presupuesto de ventas de 2024 para cada una de los departamentos de la empresa (Directas, postventa y distribución) y para cada uno de los meses (la fecha indicada es el último día de cada uno de los 12 meses). Por tanto, tenemos una tabla de presupuesto con 36 registros (12 meses * 3 departamentos):</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="446" height="710" src="https://reportingfinanciero.es/wp-content/uploads/2024/07/Imagen1.png" alt="" class="wp-image-2807" srcset="https://reportingfinanciero.es/wp-content/uploads/2024/07/Imagen1.png 446w, https://reportingfinanciero.es/wp-content/uploads/2024/07/Imagen1-188x300.png 188w" sizes="auto, (max-width: 446px) 100vw, 446px" /></figure>
</div>


<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<p>El objetivo es repartir esos importes mensuales entre cada uno de los días para que cuando hagamos los seguimientos de ventas a cada fecha, podamos comparar contra presupuesto sin tener que esperar a final de mes.</p>



<p>Para ello, vamos a utilizar nuestra <strong>tabla de calendario</strong>, a la que habremos incorporado una columna con el <strong>número de horas laborables de cada uno de los días</strong>.&nbsp; &nbsp;&nbsp;Yo utilizo este sistema de indicar el número de horas porque hay negocios en los que no todos los días se trabajan el mismo número de horas. En este ejemplo, los días de Nochebuena y Nochevieja se trabaja únicamente media jornada, por lo que esos días en lugar de indicar 8 horas indico 4 horas. Los días de cierre (festivos y fines de semana en este ejemplo) indicamos 0 horas:</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="350" height="292" src="https://reportingfinanciero.es/wp-content/uploads/2024/07/Imagen2.png" alt="" class="wp-image-2808" srcset="https://reportingfinanciero.es/wp-content/uploads/2024/07/Imagen2.png 350w, https://reportingfinanciero.es/wp-content/uploads/2024/07/Imagen2-300x250.png 300w" sizes="auto, (max-width: 350px) 100vw, 350px" /></figure>
</div>


<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<p>En esta tabla de calendario de 2024 tendríamos 366 filas (es año bisiesto), indicado las horas laborables de cada uno de los días.</p>



<p>Lo siguiente que vamos a hacer es duplicar nuestra consulta de Calendario y llamamos a la nueva consulta “<strong>Calendario mensua</strong>l”.</p>



<p>A <strong>cada una</strong> de las <strong>3 consultas </strong>que tenemos (Presupuesto, Calendario y Calendario mensual) las agregamos una nueva columna con el <strong>número de mes</strong>, el cual nos servirá posteriormente para <strong>combinar</strong> las consultas. &nbsp;Para ello, seleccionamos la columna de Fecha en una consulta, vamos al menú de Agregar columna =&gt; Fecha =&gt; Mes =&gt; Mes (como vemos en la siguiente imagen). Esta operación la repetimos en las demás consultas.</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="718" height="265" src="https://reportingfinanciero.es/wp-content/uploads/2024/07/Imagen3.png" alt="" class="wp-image-2809" srcset="https://reportingfinanciero.es/wp-content/uploads/2024/07/Imagen3.png 718w, https://reportingfinanciero.es/wp-content/uploads/2024/07/Imagen3-300x111.png 300w" sizes="auto, (max-width: 718px) 100vw, 718px" /></figure>
</div>


<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<p>A continuación, en la consulta de Calendario mensual, <strong>agrupamos</strong> los datos por la columna Mes para sumar las horas laborables de cada uno de los meses.</p>



<p>Tenemos que pulsar sobre “Agrupar por” y configurar el menú de la siguiente forma:</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="718" height="393" src="https://reportingfinanciero.es/wp-content/uploads/2024/07/Imagen4.png" alt="" class="wp-image-2810" srcset="https://reportingfinanciero.es/wp-content/uploads/2024/07/Imagen4.png 718w, https://reportingfinanciero.es/wp-content/uploads/2024/07/Imagen4-300x164.png 300w" sizes="auto, (max-width: 718px) 100vw, 718px" /></figure>
</div>


<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Obtendremos una tabla con 12 registros que refleja el total de horas laborables de cada uno de los meses:</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="418" height="347" src="https://reportingfinanciero.es/wp-content/uploads/2024/07/Imagen5.png" alt="" class="wp-image-2811" srcset="https://reportingfinanciero.es/wp-content/uploads/2024/07/Imagen5.png 418w, https://reportingfinanciero.es/wp-content/uploads/2024/07/Imagen5-300x249.png 300w" sizes="auto, (max-width: 418px) 100vw, 418px" /></figure>
</div>


<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Tras esto, combinamos la consulta del presupuesto con la del calendario mensual por el campo del mes y nos traemos las <strong>horas laborables mensuales</strong> a cada fila del presupuesto:</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="702" height="638" src="https://reportingfinanciero.es/wp-content/uploads/2024/07/Imagen6.png" alt="" class="wp-image-2812" srcset="https://reportingfinanciero.es/wp-content/uploads/2024/07/Imagen6.png 702w, https://reportingfinanciero.es/wp-content/uploads/2024/07/Imagen6-300x273.png 300w" sizes="auto, (max-width: 702px) 100vw, 702px" /></figure>
</div>


<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<p>El resultado sería el siguiente:</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="718" height="500" src="https://reportingfinanciero.es/wp-content/uploads/2024/07/Imagen7.png" alt="" class="wp-image-2813" srcset="https://reportingfinanciero.es/wp-content/uploads/2024/07/Imagen7.png 718w, https://reportingfinanciero.es/wp-content/uploads/2024/07/Imagen7-300x209.png 300w" sizes="auto, (max-width: 718px) 100vw, 718px" /></figure>
</div>


<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Ahora combinamos la consulta del presupuesto con la del calendario (el calendario normal, no el mensual) por el campo del número de mes y expandimos los campos de la <strong>fecha</strong> y las <strong>horas laborables diarias</strong>.&nbsp; (nuestra tabla de presupuesto pasará de 36 filas a 1098 =&gt; 366 días * 3 departamentos).</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="702" height="638" src="https://reportingfinanciero.es/wp-content/uploads/2024/07/Imagen8.png" alt="" class="wp-image-2814" srcset="https://reportingfinanciero.es/wp-content/uploads/2024/07/Imagen8.png 702w, https://reportingfinanciero.es/wp-content/uploads/2024/07/Imagen8-300x273.png 300w" sizes="auto, (max-width: 702px) 100vw, 702px" /></figure>
</div>


<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="479" height="341" src="https://reportingfinanciero.es/wp-content/uploads/2024/07/Imagen9.png" alt="" class="wp-image-2815" srcset="https://reportingfinanciero.es/wp-content/uploads/2024/07/Imagen9.png 479w, https://reportingfinanciero.es/wp-content/uploads/2024/07/Imagen9-300x214.png 300w" sizes="auto, (max-width: 479px) 100vw, 479px" /></figure>
</div>


<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<p>El resultado sería el siguiente:</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="718" height="268" src="https://reportingfinanciero.es/wp-content/uploads/2024/07/Imagen10.png" alt="" class="wp-image-2816" srcset="https://reportingfinanciero.es/wp-content/uploads/2024/07/Imagen10.png 718w, https://reportingfinanciero.es/wp-content/uploads/2024/07/Imagen10-300x112.png 300w" sizes="auto, (max-width: 718px) 100vw, 718px" /></figure>
</div>


<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Ahora ya tenemos en nuestra tabla de presupuesto, <strong>para cada combinación de fecha y departamento</strong>, el <strong>presupuesto mensual del departamento</strong>, las <strong>horas laborables mensuales</strong> y las <strong>horas laborables diarias</strong>.</p>



<p>Por ejemplo, en la fila 2 de la anterior imagen observamos que el día 02/01/2024 (columna FECHA.1) tiene 8 horas laborables de un total de 176 horas laborables del mes de enero; y que el presupuesto mensual del departamento DIRECTAS era de 11.591.186 €.</p>



<p>Con todos estos datos, ya podemos calcular la parte proporcional de presupuesto que le toca a cada combinación de departamento-fecha.</p>



<p>Para ello, vamos a crear una <strong>columna personalizada</strong> que llamaremos “<strong>Presupuesto diario</strong>”. Será el resultado de multiplicar el valor del presupuesto mensual por las horas laborables diarias y dividirlo entre las horas laborables mensuales:</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="718" height="508" src="https://reportingfinanciero.es/wp-content/uploads/2024/07/Imagen11.png" alt="" class="wp-image-2817" style="width:718px;height:auto" srcset="https://reportingfinanciero.es/wp-content/uploads/2024/07/Imagen11.png 718w, https://reportingfinanciero.es/wp-content/uploads/2024/07/Imagen11-300x212.png 300w" sizes="auto, (max-width: 718px) 100vw, 718px" /></figure>
</div>


<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Ponemos a la nueva columna formato número decimal fijo y el resultado sería el siguiente:</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="718" height="234" src="https://reportingfinanciero.es/wp-content/uploads/2024/07/Imagen12.png" alt="" class="wp-image-2818" srcset="https://reportingfinanciero.es/wp-content/uploads/2024/07/Imagen12.png 718w, https://reportingfinanciero.es/wp-content/uploads/2024/07/Imagen12-300x98.png 300w" sizes="auto, (max-width: 718px) 100vw, 718px" /></figure>
</div>


<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Por último, dentro de la consulta de presupuesto nos quedaríamos únicamente con las columnas “Departamento”, “FECHA.1” (a la que renombraremos posteriormente como “Fecha”) y “Presupuesto diario”.</p>



<p>El <strong>resultado</strong> sería el siguiente:</p>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="733" height="473" src="https://reportingfinanciero.es/wp-content/uploads/2024/07/Imagen13.png" alt="" class="wp-image-2819" srcset="https://reportingfinanciero.es/wp-content/uploads/2024/07/Imagen13.png 733w, https://reportingfinanciero.es/wp-content/uploads/2024/07/Imagen13-300x194.png 300w" sizes="auto, (max-width: 733px) 100vw, 733px" /></figure>
</div>


<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Por tanto, gracias a estas transformaciones realizadas en Power Query, ya habríamos conseguido nuestro objetivo de distribuir un presupuesto que nos habían entregado a granularidad mensual y dejarlo distribuido a granularidad diaria.</p>



<p>Espero que te haya resultado útil y puedas utilizarlo cuando te toque elaborar el presupuesto de 2025 😜</p>



<p>Seguimos!!! 👊​</p>



<p>PD: Te dejo preparado un pbix con los datos de este ejercicio para que puedas practicar el paso a paso.</p>



<p>El enlace de descarga es el siguiente:&nbsp;&nbsp;</p>



<div class="wp-block-kadence-advancedbtn kb-buttons-wrap kb-btns2805_db6d82-d3"><a class="kb-button kt-button button kb-btn2805_ed524b-43 kt-btn-size-standard kt-btn-width-type-auto kb-btn-global-inherit kt-btn-has-text-true kt-btn-has-svg-false  wp-block-button__link wp-block-kadence-singlebtn" href="https://reportingfinanciero.es/wp-content/uploads/2024/07/Plantilla-reparto-presupuesto-mensual-a-nivel-diario.pbix" download=""><span class="kt-btn-inner-text">Descargar</span></a></div>



<div style="height:25px" aria-hidden="true" class="wp-block-spacer"></div>
<p><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=https%3A%2F%2Freportingfinanciero.es%2Freparto-presupuesto-mensual-a-nivel-diario%2F&amp;linkname=Reparto%20presupuesto%20mensual%20a%20nivel%20diario" title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_email" href="https://www.addtoany.com/add_to/email?linkurl=https%3A%2F%2Freportingfinanciero.es%2Freparto-presupuesto-mensual-a-nivel-diario%2F&amp;linkname=Reparto%20presupuesto%20mensual%20a%20nivel%20diario" title="Email" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_telegram" href="https://www.addtoany.com/add_to/telegram?linkurl=https%3A%2F%2Freportingfinanciero.es%2Freparto-presupuesto-mensual-a-nivel-diario%2F&amp;linkname=Reparto%20presupuesto%20mensual%20a%20nivel%20diario" title="Telegram" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_whatsapp" href="https://www.addtoany.com/add_to/whatsapp?linkurl=https%3A%2F%2Freportingfinanciero.es%2Freparto-presupuesto-mensual-a-nivel-diario%2F&amp;linkname=Reparto%20presupuesto%20mensual%20a%20nivel%20diario" title="WhatsApp" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_x" href="https://www.addtoany.com/add_to/x?linkurl=https%3A%2F%2Freportingfinanciero.es%2Freparto-presupuesto-mensual-a-nivel-diario%2F&amp;linkname=Reparto%20presupuesto%20mensual%20a%20nivel%20diario" title="X" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Freportingfinanciero.es%2Freparto-presupuesto-mensual-a-nivel-diario%2F&amp;linkname=Reparto%20presupuesto%20mensual%20a%20nivel%20diario" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_skype" href="https://www.addtoany.com/add_to/skype?linkurl=https%3A%2F%2Freportingfinanciero.es%2Freparto-presupuesto-mensual-a-nivel-diario%2F&amp;linkname=Reparto%20presupuesto%20mensual%20a%20nivel%20diario" title="Skype" rel="nofollow noopener" target="_blank"></a></p><p>La entrada <a href="https://reportingfinanciero.es/reparto-presupuesto-mensual-a-nivel-diario/">Reparto presupuesto mensual a nivel diario</a> se publicó primero en <a href="https://reportingfinanciero.es">reportingfinanciero.es</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
