Ir ao conteúdo
  • Cadastre-se

Abrir um range de datas automaticamente


Ir à solução Resolvido por Basole,

Posts recomendados

trabalho em um hotel e tenho tenho a tabela abaixo com o nome do hospéde, data de entrada e diarias.

 

A1  (nome)        B1 (entrada)           C1 (diarias)

Renata             01/06                        2

Jose                 05/05                       3

Sandra             03/07                       2

 

Para fazer a ocupacao por dia do hotel preciso abrir as datas conforme o numero de diarias e entrada do hospede, ou seja, alguma macro que abra a tabela acima para algo como abaixo.

Por exemplo a macro deve copiar e colar em outra aba o nome do hospede com a data de entrada ao lado e depois repetir isso conforme até o numero maximo de diarias. E se possivel a primeira copia fazer com a data de entrada..as outras ele soma +1.

 

então ficaria uma tabela assim

 

Renata      01/06

Renata      02/06

Jose           05/06

Jose           06/06

Jose            07/06

Sandra       03/07

Sandra       04/07

 

 

Link para o comentário
Compartilhar em outros sites

  • Solução

'Segue um ex. de acordo com as informaçoes fornecidas. Crie um modulo em sua plan. e cole o codigo abaixo:

 

Option Explicit
Sub AbriRangeDataAutomaticamente()
    Dim i As Long, x, y As Long
    Dim nDia As Double
    Dim Mydata As Date
    Dim P1 As Worksheet, P2 As Worksheet
    Set P1 = Sheets("Plan1") ' Altere de acordo com o nome da sua (aba)planilha 1
    Set P2 = Sheets("Plan2") ' Altere de acordo com o nome da sua (aba)planilha 2
    P2.Activate
        P2.Range("A2:b" & P2.Range("A1048576").End(xlUp).Row + 1).ClearContents
    For i = 2 To P1.Range("A1048576").End(xlUp).Row + 1
     x = P2.Range("A1048576").End(xlUp).Row + 1
        P2.Cells(x, 1) = P1.Cells(i, 1)
        P2.Cells(x, 2) = P1.Cells(i, 2)
        x = x + 1
        y = 2
        Do While y <= P1.Cells(i, 3)
            Mydata = P1.Cells(i, 2)
            nDia = y - 1
            P2.Cells(x, 1) = P1.Cells(i, 1)
            P2.Cells(x, 2) = CDate(Mydata) + nDia
            y = y + 1
            x = x + 1
        Loop
    Next
End Sub

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...