vincular una salga rellenar que puedo poner pasar para otra numero nombre misma jalar informaciĆ³n informacion hoja hacer enlazar datos copiar condicion con como columna celdas celda excel vba excel-vba copy-paste autofilter

excel - salga - Encuentra celdas en una hoja y copia las filas en otra hoja



formulas de excel (1)

Tengo una hoja llamada Backlog que contiene filas y columnas de datos. Necesito un código que buscará fila por fila en la penúltima columna buscando # N / A. Cuando encuentre # N / A, debe verificar la última columna si contiene una C o no. Si contiene una C, entonces toda la fila debe adjuntarse a una hoja llamada Cerrar sesión. Si la última columna no contiene una C, entonces toda la fila se debe anexar a una hoja llamada Denegada. La fila se debe eliminar de la hoja de Registro original una vez que se haya movido a Desconectado o Denegado. El código que tengo a continuación no está funcionando. Después del primer For Statement va a End Sub, pero no hay ningún error de compilación.

Private Sub CommandButton2_Click() Dim IMBacklogSh As Worksheet Set IMBacklogSh = ThisWorkbook.Worksheets("Backlog") Dim logoffSh As Worksheet Set logoffSh = ThisWorkbook.Worksheets("Claims Logged off") Dim deniedsh As Worksheet Set deniedsh = ThisWorkbook.Worksheets("Claims Denied") IMBacklogSh.Select Dim i As Long For i = 3 To Cells(Rows.Count, 13).End(xlUp).Row If Cells(i, 13).Value = "#N/A" Then If Cells(i, 14).Value = "C" Then IMBacklogSh.Rows(i).EntireRow.Copy Destination:=logoffSh.Range("A" & logoffsh.Cells(Rows.Count, "A").End(xlUp).Row + 1) Else IMBacklogSh.Rows(i).EntireRow.Copy Destination:=deniedsh.Range("A" & deniedsh.Cells(Rows.Count, "A").End(xlUp).Row + 1) End If End If Next i End Sub


Pruébalo como If Cells(i, 13).Text = "#N/A" Then . #N/A es un código de error, no un valor; sin embargo, se puede examinar la propiedad Range.Text o se puede usar la función IsError para examinar el contenido de la celda en busca de cualquier error.

If Cells(i, 13).Text = "#N/A" Then ''Alternate with IsError ''If IsError(Cells(i, 13)) Then If Cells(i, 14).Value = "C" Then IMBacklogSh.Rows(i).EntireRow.Copy _ Destination:=logoffSh.Range("A" & logoffsh.Cells(Rows.Count, "A").End(xlUp).Row + 1) Else IMBacklogSh.Rows(i).EntireRow.Copy _ Destination:=deniedsh.Range("A" & deniedsh.Cells(Rows.Count, "A").End(xlUp).Row + 1) End If End If

Sin embargo, el examen celular individual no es necesario y lleva mucho tiempo. El método Autofiltro se puede usar para aislar #N/A con C y #N/A con <>C

Private Sub CommandButton2_Click() Dim IMBacklogSh As Worksheet, logoffSh As Worksheet, deniedsh As Worksheet Set IMBacklogSh = ThisWorkbook.Worksheets("Backlog") Set logoffSh = ThisWorkbook.Worksheets("Claims Logged off") Set deniedsh = ThisWorkbook.Worksheets("Claims Denied") With IMBacklogSh If .AutoFilterMode Then .AutoFilterMode = False With .Cells(1, 1).CurrentRegion .AutoFilter field:=13, Criteria1:="#N/A" .AutoFilter field:=14, Criteria1:="C" With .Resize(.Rows.Count - 1, Columns.Count).Offset(1, 0) If CBool(Application.Subtotal(103, .Cells)) Then .Copy Destination:= _ logoffSh.Cells(Rows.Count, "A").End(xlUp).Offset(1, 0) ''optionally delete the originals .EntireRow.Delete End If End With .AutoFilter field:=14, Criteria1:="<>C" With .Resize(.Rows.Count - 1, Columns.Count).Offset(1, 0) If CBool(Application.Subtotal(103, .Cells)) Then .Copy Destination:= _ deniedsh.Cells(Rows.Count, "A").End(xlUp).Offset(1, 0) ''optionally delete the originals .EntireRow.Delete End If End With End With If .AutoFilterMode Then .AutoFilterMode = False End With End Sub