Jump to content

Maria_80

Members
  • Posts

    176
  • Joined

  • Last visited

  • Country

    Spain

Everything posted by Maria_80

  1. Hola, Mauricio. Intento copiar todas las filas donde hay datos en TBIS, nunca me había dado problemas. En este caso solo existe una fila, pero a veces hay más. Depende del día... no consigo solucionarlo. Es cierto que me selecciona toda la hoja pero nunca me había dado problemas.
  2. Hola, Estoy con algo muy básico, nunca he tenido problemas... pero me ha saltado de repente un error por primera vez donde no consigo encontrar qué sucede. Estoy intentado copiar los datos de la hoja TBIS en la primera fila libre de la hoja T. Es algo que hago a menudo, pero me he encontrado con un problema que nunca había visto. Error 1004. el área de copiado y pegado no tienen el mismo tamaño. Tienen el mismo número de columnas... y las cabeceras son iguales. He probado a limpiar todas las celdas vacías de cada hoja, por si ahí estuviera el problema pero no consigo verlo. Os adjunto un ejemplo. Gracias de antemano. ejemplo_copypaste.xlsm
  3. Mil gracias, Antoni! Era exactamente esto! Va perfecto.
  4. Hola, buenas. Os adjunto un ejemplo con una macro para copia la última fila de cada grupo de ID (primera columna) en la hoja 2, el caso es que me sale para poder ir añadiendo la primera columna y la que yo le indique, pero no sé cómo indicarle que me copie el registro completo. Había pensado en ir copiando todo el bucle por cada columna, pero cuando son 40 columnas o más, es un montón de código y se ralentiza mucho. ¿Alguna idea para acortarlo? Os he dejado el código de ejemplo en el fichero para que podáis verlo y probarlo. Muchas gracias! Ejemplo_lastrow.xlsm
  5. Antoni, mil gracias como siempre. Funciona de maravilla y se entiende super bien. Gracias!!!
  6. Hola, Estoy intentado numerar una columna una vez que la filtro por columna B, este código me funciona si no añado filtro, pero una vez que lo hago se me para y me dice que no coinciden los tipos… encontré aquí en el foro este código (es el que me ha servido para adaptarlo a lo que busco): Dim nFilas As Long Dim nFila As Long Dim i As Long nFilas = Cells(Rows.Count, 2).End(xlUp).Row nFila = 1 For i = 2 To nFilas + 2 If Cells(i, 2) = "" Then Cells(i, 3) = "" If Cells(i, 2).SpecialCells(xlCellTypeVisible) <> "" Then Cells(i, 3) = nFila nFila = nFila + 1 End If Next Me va de lujo si no filtro, pero se me para y dice que no coinciden los tipos al filtrar (os he dejado la macro en el fichero, podéis echarle un vistazo? Gracias de antemano. Ejemplo_filtro_.xlsm
  7. Qué sencillo y qué efectivo! Mil millones de gracias como siempre! Y funciona para todos los productos! ;).
  8. Mira, te lo adjunto con todas las modificaciones. Ahora no se me para, pero solo me rellena la fila dos del producto 1 como si ese fuera el primer ingreso. Al resto de condiciones le añadí (cpase <> 0) pero no entra en ellas... He estado investigando para que ejecute esto por cada grupo de productos de la columna 1, pero no encuentro la manera... Ej_Inventario - v2.xlsm
  9. Hola, Pampa. Primero muchas gracias por tu respuesta. Pegué el código dentro del mismo módulo, modifiqué lo de Hoja1 por Sheets("Inventario"). También probé ha dejarlo como Hoja1 por si acaso. He puesto arriba las variables que modificaste y no entendí muy bien si dentro de todas mis condiciones tengo que añadir al final esto (cpase = 0), pero se me para aquí... dice error definido por la aplicación u objeto... todavía no controlo tanto y no he sido capaz de adaptarlo. ¿Esto sería para un producto, verdad? Tendría que añadir luego otra cosa para que lo ejecute según van cambiando el grupo de productos de hoja Inventario2? Mil gracias. cfila1 = Hoja1.Cells(i, 1).Row
  10. Hola, Hice una macro para gestionar el stock de almacén. La tabla está ordenada por producto y por fecha. Con un condicional le digo que si la fila corresponde a una entrada y justo la anterior también, me ponga en la columna stock acumulado las unidades del día de hoy más las que figuran en el stock acumulado del día anterior. (si una salida... que lo reste, etc.). Hago lo mismo con el precio. Hasta ahí la macro me va bien. El problema es que no sé cómo añadir que para el primer registro de cada producto (que siempre es de entrada) ponga que el stock es igual a las Unidades de la misma fila. Como podéis ver en la tabla se queda en blanco, así que me arrastra el error hasta el final. ¿Alguna idea de cómo añadir esto a la macro? Os la he dejado en el fichero en Hoja “Inventario”. Por otro lado, en la pestaña Inventario 2, está la misma tabla pero con el listado de varios productos. Una vez que tenga lo anterior ¿Cómo añado que pase la macro para cada cambio de producto en columna A? Muchísimas gracias de antemano. Ej_Inventario.xlsm
  11. Lo terminé sacando así, por si lo necesitáis un día: Sub Rellenar() With Worksheets("Hoja1") Dim CurrValue As String Range("B1").End(xlDown).Select CurrValue = ActiveCell.Value For i = 2 To .UsedRange.Rows(.UsedRange.Rows.Count).Row Cells(i, "B").Value = CurrValue Next End With End Sub
  12. Hola, buenos días. Estoy con una macro para buscar el primer valor con dato en una columna (hasta ahí bien), el caso es que quiero que una vez que lo encuentre me rellene toda la columna con ese dato. Con lo que hice solo consigo que se copia una vez justo debajo, no encuentro el modo de que rellene la columna completa. Le podéis echar un vistazo? Mil gracias de antemano. ej_rellenar.xlsm
  13. Hola, Antoni! Funciona perfecto con los datos ordenados! Me ha servido! Muchas gracias ;).
  14. Hola, Estoy intentando eliminar los valores que se repiten en un rango. No me refiero a quitar los duplicados y dejar los registros únicos. Es decir, quitar todo lo que se repita y dejar todo lo demás, adjunto un ejemplo de cómo tendría que quedar en la columna F. Hasta ahora siempre he usado esto, pero no me sirve para este caso. ¿Alguna alternativa? Gracias. Set a = Sheets(«Hoja1») Set a = Sheets(«Hoja1») uf = a.Range(“A” & Rows.Count).End(xlUp).Row a.Range(“A1:B” & uf).RemoveDuplicates Columns:=Array(1, 2), Header:=xlYes
  15. funciona a las mil maravillas, Antoni! Mil millones de gracias!!
  16. gerson, he visto que no hay macro en el fichero para la tabla dinámica. Dejo aquí un ejemplo que tengo de hace tiempo para hacer una tabla dinámica con macro, sería adaptarlo. Aunque para este caso sigue sin servirme: 'Crear Hoja TablaDinamica Worksheets.Add(Before:=ActiveSheet).Name = "TablaDinamica" Set WSD1 = Worksheets("TablaDinamica") For Each PT In WSD1.PivotTables PT.TableRange2.Clear Next PT Set WSD2 = Worksheets("Hoja2") FinalRow = WSD2.Cells(Rows.Count, 1).End(xlUp).Row Set PRange = WSD2.Cells(1, 1).Resize(FinalRow, 7) Sheets("Hoja2").Select Set PTCache = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=PRange.Address) Set PT = PTCache.CreatePivotTable(TableDestination:=Worksheets("TablaDinamica").Range("B3"), TableName:="PivotTable3") PT.Format xlReport6 PT.ManualUpdate = True PT.AddFields RowFields:=Array("codigo") With PT.PivotFields("Hoja1") .Orientation = xlDataField .Function = xlCount .Position = 1 End With With PT.PivotFields("Hoja1") .Orientation = xlColumnField .Position = 1 End With PT.ManualUpdate = False Sheets("TablaDinamica").Select strVal = "Sum of Total" On Error Resume Next Set PT = ActiveCell.PivotTable If PT Is Nothing Then Exit Sub For Each pf In PT.RowFields pf.AutoSort xlAscending, strVal Next pf
  17. Gracias, Gerson. Hace tiempo pensé también en la tabla dinámica, es parecido a lo que tú hiciste y etsá fenomenal, pero lamentablemente los ficheros con los que trabajo no puedo convertirlos en tabla dinámica y entregarlos así... estaba buscando una especie de bucle que recorra la tabla y me haga el agrupa y suma sin necesidad de tener que meter una línea de código por cada campo que necesite sumar. Si encuentro alternativa lo pongo por aquí. Gracias!
  18. Hola, Os adjunto un fichero donde uso la función SUMAR.SI.CONJUNTO. Siempre que me la llevo a VBA lo hago con FormulaR1C1 = "=SUMIFS(C[-8],C[-11],RC[-3],C[-10],RC[-2])". Vamos! Grabando la macro cuando hago la Fx. Hasta ahora siempre bien cuando solo tengo que sumar dos o tres columnas. El caso es que tengo que repetir esto mismo en una gran cantidad de columnas y este método se queda extremadamente largo. Y el código se queda muy largo. ¿Conocéis alguna alternativa para poder hacer algo así que sea menos tedioso? En el ejemplo solo os he puesto cuatro columnas. Gracias de antemano. ejemplo_sumar.xlsm
  19. Gracias, Antoni! No encontraba nada por ahí. Funcionan todas las soluciones, aunque voy a desarrollar sobre esta, es la que he podido entender mejor para adaptarlo a lo mío y de momento genial. Gracias de nuevo!
  20. Hola, adjunto ejemplo donde intento hacer un buscarV solo en las celdas filtradas en Hoja1. El caso es que me devuelve igual el primer dato que encuentra. Alguna alternativa? Muchas gracias. vlookup.xlsm
  21. Hola, ¿puede alguien revisar esta macro? Sería este código, ahora mismo lo tengo en verde para que no salte. Quiero que una vez que introduzca datos en la celda B1, si la longitud es diferente a 10 caracteres me avise. Le pongo que haga esta comprobación cuando la celda no esté vacía. Algo así como después de actualizarla. El problema es que al hacer una prueba, me salta el msgbox igual en plan bucle infinito… no sé cómo solucionarlo. Gracias! Private Sub Worksheet_Change(ByVal Target As Range) 'celda = "B1" 'If Not IsEmpty(celda) And Len(celda) <> 10 Then 'MsgBox ("Revisar Código. 10 caracteres obligatorios"), vbInformation 'Range("B1").Clear 'End If End Sub ejemplo_len.xlsm
×
×
  • Create New...

Important Information

Privacy Policy