como transferir ou copiar o valor da célula para outra célula em uma folha diferente com base no valor da célula?

0

Eu tenho duas planilhas, uma chamada Database e a outra chamada Project Card.

Todas as informações de cada projeto estão em uma linha na folha Banco de Dados, identificadas por um número de projeto específico. A planilha do Cartão de Projeto contém todas as informações para um único projeto especificado pelo usuário. O usuário insere o número do projeto e as informações relacionadas a esse projeto são apresentadas usando o Vlookup.

Meu problema é que o usuário às vezes precisa adicionar uma nota para um projeto específico na planilha do Cartão de Projeto e quero que essa nota também seja listada na planilha Banco de Dados.

Por exemplo: o usuário insere 304 (o número do projeto) na planilha do Cartão de Projeto e, depois de ler os detalhes, o usuário adiciona uma observação sobre o projeto 304. Gostaria que essa nota fosse transferida para a planilha Banco de Dados no linha para o projeto número 304.

    
por Amjad Alluhaybi 18.08.2017 / 13:57

1 resposta

0

Como as notas inseridas na planilha do Cartão de Projeto são apenas temporárias, você precisará usar o VBA para fazer isso. E isso é um pouco complicado porque você quer manter a nota na planilha Database, mesmo depois que a nota no Project Card desaparecer.

Para fazer isso, você precisará de uma coluna Notas na folha de Cartão de Projeto que é preenchida pelo VLOOKUP () e outra coluna, talvez "Nova Nota", na qual o usuário pode inserir ou alterar a nota existente.

Aqui está um código de exemplo que irá ajudá-lo a começar. São apenas algumas linhas de código e incluí comentários para ajudá-lo a adaptá-lo à sua situação.

Esta sub-rotina monitora qualquer alteração na coluna New Note na planilha Project Card e copia a célula modificada para a linha correta do número do projeto na planilha Database.

Private Sub Worksheet_Change(ByVal Target As Range)

    'Setup variables
    'KeyCells contains the cells that will trigger the action when changed.
    Dim KeyCells As Range
    Dim ProjectNum As Integer
    Dim DBProjectCell As Range

    Set KeyCells = Range("E2:E8")   'Change "E2:E8" to your Project Card column where user enters a New Note.
    ProjectNum = Range("A2").Value  'Change "A2" to your Project Card cell containing the Project Number.

    'Check to see if anything changed in the New Note column
    If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then   
        'Don't delete an existing Note when the Target goes blank
        If Target.Value <> "" Then
           'Get the Database worksheet cell containing this project number
           'Change "A11:A21 to the Database column containing the project numbers
           Set DBProjectCell = Worksheets("Database").Range("A11:A21").Find(What:=ProjectNum)

           'Copy the new Note to the Database sheet.
           'Change "J" to the Database column where the Notes will go:
           Worksheets("Database").Range("J" & DBProjectCell.Row).Value = Target.Value
        End If
    End If

End Sub

Espero que isso ajude. Se você é novo no VBA, siga as instruções nesta página de ajuda para Copiar o código VBA do Excel para um: Módulo de Planilha .

    
por 18.08.2017 / 19:01