Cria dados de outra planilha para entrar na respectiva linha na planilha principal

0

Eu recebi uma "nova" planilha que será gerada algumas vezes por dia e será excluída após este sub.

Eu quero copiar os dados da planilha "nova" e colá-los nos arquivos existentes     folha de "registros"

  1. cole os dados em sua respectiva linha (frutas diferentes)
  2. adicione nova linha de fruta se a fruta não existir na folha "registros"
  3. classifica de (a-z), todo o intervalo usado na planilha "registros" pela primeira coluna do nome da fruta
  4. preencha zero para a célula em branco encontrada no intervalo usado
  5. adicione uma linha total à última linha do intervalo usado + 1 (para que seja diferente sempre que essa planilha for executada para nova ordem paralisada)

Folha:Registros,novos,comoeuqueroisso
Nestecaso,vocêpodetomarnotadabanana,mirtiloeDragonfruit

Agoraestourecebendooerropara"Bloquear se sem finalizar".
Atualizações: Eu perdi o End If para encontrar blankCol. Agora o código não tem erro, mas não consigo obter os resultados desejados.
Eu não tenho idéia do que deu errado no código como a banana, blueberry deve ser adicionado como novos frutos em "Registros", mas agora eu recebo um morango extra na lista, acho que deve ser smtg sobre a outra condição, mas eu don não sei como consertar isso.

Por enquanto eu só chego à 2ª parte dos meus requerimentos, já que eu não estou muito familiarizado com o range usado ainda, eu ainda estou tendo um pouco de dificuldade em codificá-lo.

Sub fruit()

'find first blank column
blankCol = ThisWorkbook.Worksheets("Records").Cells(1, Columns.Count).End(xlToLeft).Column
If blankCol > 1 Then
blankCol = blankCol + 1
End If

'paste the list into existing "Records" sheet
Set rsht = ThisWorkbook.Worksheets("Records")
Set r = rsht.Range("A1") 'record sheet

'set up header for new entry in "Records"
r.Offset(0, blankCol - 1).Value = "new" 'new sheet name from different stalls
r.Offset(1, blankCol - 1).Value = "Amount"

'new sheet with new data
Set temp = ThisWorkbook.Worksheets("new")
Set n = temp.Range("A1") 'temp : new

Dim lastrow As Long
lastrow = temp.Cells(Rows.Count, "A").End(xlUp).Row 'last row in new temp sheet

Dim nextrow As Long
nextrow = rsht.Cells(Rows.Count, "A").End(xlUp).Row + 1 'find next empty row in "Records"

    j = 2 '"Records" sheet
    For i = 1 To lastrow 'refer new

        If n.Offset(i, 0).Value = r.Offset(j, 0).Value Then 'if name matched then

            r.Offset(j, blankCol - 1).Value = n.Offset(i, 1).Value 'copy respective value

        Else

            'paste new name into next available row
            r.Offset(nextrow, 0).Value = n.Offset(i, 0).Value 'fruits
            r.Offset(nextrow, blankCol - 1).Value = n.Offset(i, 1).Value 'amount

        End If

    j = j + 1        
    Next i

End Sub

'delete that new sheet
'ThisWorkbook.Worksheets("new").Delete
    
por ExcelNovice 05.05.2017 / 17:02

0 respostas