Saludos Sr. @Héctor Miguel agradecido por sus comentarios. Un poco de contexto, el resultado, que pretendo obtener en la Celda "E11" dependiendo de las horas introducidas en en la Celda "D11" me permite obtener los descansos obligatorios por Ley para periodos de tiempo determinados de alli que estoy tomando los cuatro casos más comunes, por tal motivo la Celda "D11" solo podrá adquirir valores comprendidos entre las 0 Horas y las 28 Horas mientas que la Celda "E11" exclusivamente podrá reflejar como resultado cuatro valores 0, 1, 2 y 3, ya que siendo un requisito legal no existe la posibilidad de obtener otro resultado si los valores de la Celda "D11" están comprendidos entre 0 Horas y 28 Horas, para acotar más el resultado y no dejar intervalos abiertos modifique la última fórmula: =SI(Y($D8>=21;$D8<29);3;0) Adjunto nuevamente el archivo con las correcciones mencionadas así como con los resultados esperados conforme me solicitó.
Libro1_110914.xlsx
Por
jues , · publicado hace 11 horas 11 hr
Mi Macros transforma datos del Excel a txt separando las columnas por un palote, mi problema es que transfiere también la información de filas vacías agregando los palotes hasta el infinito.
Sub CreaTxT()
Dim NombreArchivo, RutaArchivo As String
Dim obj As FileSystemObject
Dim tx As Scripting.TextStream
Dim ht As Worksheet
Dim i, j, nfilas, ncolumnas As Integer
NombreArchivo = "LE" & Cells(2, 4).Value & Cells(3, 4) & "0008010000" & Cells(4, 5) & Cells(5, 5) & Cells(6, 5) & "1"
RutaArchivo = ActiveWorkbook.Path & "\" & NombreArchivo & ".txt"
Set obj = New FileSystemObject
Set tx = obj.CreateTextFile(RutaArchivo)
Set ht = Worksheets("REGISTRO FINAL")
nfilas = ht.Range("a6", ht.Range("a6").End(xlDown)).Cells.Count
ncolumnas = ht.Range("a5", ht.Range("a5").End(xlToRight)).Cells.Count
For i = 5 To nfilas
For j = 1 To ncolumnas
tx.Write ht.Cells(i + 1, j)
If j < ncolumnas Then tx.Write "|"
Next j
tx.WriteLine
Next i
tx.Close