[RESUELTO]Insertar fila si cumple una condicion
Publicado: Mié Feb 19, 2020 4:55 pm
Buenos dias,
Tengo una tabla de datos que siempre va a tener una columna para el valor de un producto antes de iva, y otra para el valor del iva. Con esos datos debo generar un informe que solo permite una columna de valores, pero no se pueden sumar porque el valor antes de iva va a una cuenta y el iva a otra.Como durante el mes se generan muchos registros gasto tiempo estando insertando manualmente debajo de la linea antes de iva otra para incluirle el iva. Además no todos los productos tienen iva y por ende para esos casos, no habría que insertar ninguna fila. Y además, a la tabla de informe no le puedo modificar el diseño.
Con el ejemplo sencillo del adjunto muestro lo que quiero decir: El tornillo tiene iva y por ende, en la tabla de informe, debajo de la fila 12 debo ingresar una fila para que se copie el valor del iva. El valor del iva lo coloqué en la columna D buscando filtrar los productos que sí tienen iva. Para este sencillo ejemplo solo son dos. De manera que debajo de la fila 14 también debo insertar una fila para colocar el valor 80.
Había pensado en usar la fórmula SI para esto, buscando que si la columna D es numérica, se insertara una fila debajo de la celda que cumpliera esa condición y se copia el valor que aparece en la celda que cumple con la condición. Creo que con fórmula no se puede, por eso recurrí a una macro. Pero como no conozco mucho del tema tengo solo un código que de acuerdo a la selección, inserte una fila completa debajo de esa celda. El problema de este código como lo tengo es que yo debo colocar el mouse en la celda que tiene el valor y pues técnicamente no hago nada pues es más rápido dar click contrario e insertar
Sub Insertafila()
Dim oVal As Object
Dim oHojaActiva As Object
Dim lFila As Long
oVal = ThisComponent.getCurrentSelection()
If IsNumeric(oVal.getValue) Then
lFila = oVal.getCellAddress.Row + 1
oHojaActiva = ThisComponent.getCurrentController.getActiveSheet()
oHojaActiva.getRows.insertByIndex(lFila,1)
End If
End Sub
No he podido avanzar pues como mencioné antes, en la columna D van a haber varias celdas que cumplen la condición de ser número.
Al final lo que quiero es un resultado como se muestra en el adjunto.
Si alguien me puede dar una mano con esto muchas gracias.
Tengo una tabla de datos que siempre va a tener una columna para el valor de un producto antes de iva, y otra para el valor del iva. Con esos datos debo generar un informe que solo permite una columna de valores, pero no se pueden sumar porque el valor antes de iva va a una cuenta y el iva a otra.Como durante el mes se generan muchos registros gasto tiempo estando insertando manualmente debajo de la linea antes de iva otra para incluirle el iva. Además no todos los productos tienen iva y por ende para esos casos, no habría que insertar ninguna fila. Y además, a la tabla de informe no le puedo modificar el diseño.
Con el ejemplo sencillo del adjunto muestro lo que quiero decir: El tornillo tiene iva y por ende, en la tabla de informe, debajo de la fila 12 debo ingresar una fila para que se copie el valor del iva. El valor del iva lo coloqué en la columna D buscando filtrar los productos que sí tienen iva. Para este sencillo ejemplo solo son dos. De manera que debajo de la fila 14 también debo insertar una fila para colocar el valor 80.
Había pensado en usar la fórmula SI para esto, buscando que si la columna D es numérica, se insertara una fila debajo de la celda que cumpliera esa condición y se copia el valor que aparece en la celda que cumple con la condición. Creo que con fórmula no se puede, por eso recurrí a una macro. Pero como no conozco mucho del tema tengo solo un código que de acuerdo a la selección, inserte una fila completa debajo de esa celda. El problema de este código como lo tengo es que yo debo colocar el mouse en la celda que tiene el valor y pues técnicamente no hago nada pues es más rápido dar click contrario e insertar
Sub Insertafila()
Dim oVal As Object
Dim oHojaActiva As Object
Dim lFila As Long
oVal = ThisComponent.getCurrentSelection()
If IsNumeric(oVal.getValue) Then
lFila = oVal.getCellAddress.Row + 1
oHojaActiva = ThisComponent.getCurrentController.getActiveSheet()
oHojaActiva.getRows.insertByIndex(lFila,1)
End If
End Sub
No he podido avanzar pues como mencioné antes, en la columna D van a haber varias celdas que cumplen la condición de ser número.
Al final lo que quiero es un resultado como se muestra en el adjunto.
Si alguien me puede dar una mano con esto muchas gracias.