¿Cómo buscar la ultima columna que tenga valor en una macro?
Tengo el siguiente código de macro y quiero que en vez de prefijar la columna "AS" que coja la ultima columna que contenga valor en el fichero y después se le adicionan 2 columnas nuevas que también las prefije en "AT" y "AU" y quiero que no sean fijas, si no poner las 2 columnas siguientes a la columna que tenia el ultimo valor que en dependencia de las columnas que tenga el fichero CSV que pueden ser diferentes, no siempre AS ni AT ni AU.
¿Alguna idea?
Gracias,
Aleida
Sub Consolidar_csv() Dim Ruta As String, nom As String Dim arch As Variant Dim l2 As Workbook Dim sh1 As Worksheet, sh2 As Worksheet Dim u1 As Long, u2 As Long ' Application.DisplayAlerts = False Application.ScreenUpdating = False ' Set sh1 = Sheets("Sheet1") sh1.Cells.Clear ' With Application.FileDialog(msoFileDialogFilePicker) .Title = "Seleccione archivos csv" .Filters.Clear .Filters.Add "Archivos csv", "*.csv" .FilterIndex = 1 .AllowMultiSelect = True .InitialFileName = ThisWorkbook.Path & "\" If .Show Then code = 1 For Each arch In .SelectedItems Set l2 = Workbooks.Open(arch) Set sh2 = l2.ActiveSheet nom = Mid(arch, 1, Len(arch) - 4) 'nom = Split(nom, "_")(0) arch = Split(nom, Application.PathSeparator) nom = arch(UBound(arch)) u1 = sh1.Range("A" & Rows.Count).End(3).Row + 1 u2 = sh2.Range("A" & Rows.Count).End(3).Row ' Selection.NumberFormat = "@" sh1.Range("A:A").NumberFormat = "00000" sh1.Range("A1:AS1").Value = sh2.Range("A1:AS1").Value sh1.Range("A" & u1).Resize(u2 - 1, Columns("AS").Column).Value = _ sh2.Range("A2:AS" & u2).Value sh1.Range("AT1").Value = "Version" sh1.Range("AU1").Value = "Code" sh1.Range("AT" & u1).Resize(u2 - 1).Value = nom sh1.Range("AU" & u1).Resize(u2 - 1).Value = code ' l2.Close False code = code + 1 Next End If End With Application.DisplayAlerts = True Application.ScreenUpdating = True MsgBox "Fin" End Sub
1 respuesta
Respuesta de Dante Amor
3