DONUT PROJECT 2018 - VBA - 07 - Amostra de Macro

DONUT PROJECT 2018 - VBA - 07 - Amostra de Macro

Aqui está um exemplo simples, usando o Excel 2013, que deve ajudá-lo a começar, permitindo que você aplique esses conceitos. Vou dar-lhe primeiro o problema e a resposta no final.
Aqui está o problema: Você tem 10 sujeitos em um estudo do sono com um ID correspondente e um número entre um e 50, indicando o número de “Ovelhas” que um sujeito contou. Você deseja criar uma nova chave que vincule a ID a essa contagem específica de “Ovelhas” para fins de arquivamento. Combine o número Record (que é o SubjectId nesse caso, para simplificar), o número Ovelha, a letra maiúscula “G” e um número aleatório de três dígitos à direita da coluna Ovelha.

Por exemplo, se o número de Ovelhas contadas no registro for 24, concatene 24, a letra maiúscula "G" e um número aleatório de 3 dígitos, como este: 24G132. Em seguida, destaque o novo código em uma cor diferente.

Aqui está uma tabela de amostra (crie-a manualmente em uma pasta de trabalho em branco, preferencialmente nas colunas “A” e “B”):



Ok, tem a resposta?
Tudo bem, aqui está minha resposta:



Sub LoopThroughColumn()
'Loop through all of the cells in one column of a small table and add the RowNumber _
to the Sheep value and put the result in the cell to the right
Application.ScreenUpdating = False

Dim Counter As Integer
Dim FinalRow As Integer
Dim Header As Range
Dim NewId As Variant

Excel.Application.Workbooks("ExcelDemo.xlsm").Worksheets("SleepStudy").Activate

Set Header = ActiveSheet.Range("B1")

FinalRow = Cells(Rows.Count, 1).End(xlUp).Row
For Counter = 0 To FinalRow - 2
Set NewId = Header.Offset(Counter + 1, 1)
With NewId
.Value = Header.Offset(Counter + 1).Value + Counter + 1 _
& "G" & WorksheetFunction.RandBetween(100, 999)
.Font.ColorIndex = 25
End With
Next Counter
End Sub



Como há muita coisa acontecendo aqui, eu vou dividir isso para ilustrar vários pontos:
Aqui está o resultado:
NOTA: A Sub LoopThroughColumn acima não é a minha primeira resposta em funcionamento.

Aqui está minha primeira resposta (note que adicionei o sufixo “_test” - um bom hábito de separar uma resposta que você está trabalhando do último trecho de código que você não quer arriscar a quebrar):




Sub LoopThroughColumn_test()
'Loop through all of the cells in one column of a small table and add the RowNumber _
to the Sheep value and put the result in the cell to the right
Application.ScreenUpdating = False

Dim Counter As Integer
Dim FinalRow As Integer
Dim Header As Range

Application.Workbooks("ExcelDemo.xlsm").Worksheets("SleepStudy").Activate

Set Header = ActiveSheet.Range("B1")

FinalRow = Cells(Rows.Count, 1).End(xlUp).Row

For Counter = 0 To FinalRow - 2

Header.Offset(Counter + 1, 1).Value = Header.Offset(Counter + 1).Value + Counter + 1
Header.Offset(Counter + 1, 1).Font.ColorIndex = 25
Header.Offset(Counter + 1, 1).Value = Header.Offset(Counter + 1, 1).Value & _
"G" & WorksheetFunction.RandBetween(100, 999)

Next Counter

End Sub

E a saída é exatamente igual à minha resposta final. Vamos percorrer a versão "_test" (acima) para que entenda o que está acontecendo:
  1. Primeiro, descreva o que o código realmente faz em uma breve seção de comentários e use um espaço seguido por um sublinhado para continuar o comentário na próxima linha se precisar (linhas 2-3).
  2. Em seguida, desative o ScreenUpdating por motivos de desempenho. Copie o código exato na linha 4. É uma etapa muito comum e importante à medida que trabalha com pastas de trabalho maiores e códigos mais complexos.
  3. Declare as variáveis ​​que você acha que precisará agora, mas sinta-se à vontade para alterá-las conforme necessário (linhas 6-8).
  4. Em seguida, estabeleça o escopo da Macro - diga a qual planilha e pasta de trabalho você quer que ela seja executada (linha 10).
  5. Crie uma variável para referenciar o único cabeçalho em que estamos interessados ​​(consulte a linha 12). Sim, codifiquei-o para este exemplo para fins de simplicidade.
  6. Escreva a fórmula “FinalRow” como mostrado na linha 14 antes de qualquer expressão de loop que envolva realizar qualquer ação nas células em uma coluna de uma tabela

Notas de rodapé
Para o propósito de manter a prosa concisa, a análise de dados e a reconciliação entre o relatório ad hoc csv do cliente e sua planilha serão referidas como "o processo". Em outras palavras, você não precisa fazer login em outra máquina durante o processo para entender as relações entre os pontos de dados. Se o seu sistema ou administrador de rede tiver a largura de banda, sinta-se à vontade para trabalhar com ele enquanto atualiza seu código para considerar atualizações de senha agendadas e alteração dos níveis de permissão para todos os usuários relevantes. Como alternativa, você pode evitar o problema escrevendo macros específicas para cada domínio no processo. Se uma dessas opções não estiver disponível para você, o VBA pode não ser a solução ideal para esse problema.

Arquivos TXT ou CSV podem ser convertidos em arquivos de trabalho do Excel (arquivos XLS)


A fórmula “FinalRow” é algo encontrado no excelente livro de VBA, “VBA e Macros: Microsoft Excel 2013” por Bill Jelen e Tracy Syrstad na página 82. É uma fórmula que permite que você encontre dinamicamente o tamanho de uma tabela ou intervalo. Você vai apreciar isso muito mais depois, mas apenas tenha uma ideia agora. Pense em como funciona, desmembrando-a usando o método “select”. Na verdade, eu pode-se matar dois coelhos com uma só cajadada, ajudando você a usar o explorador de objetos enquanto quebra essa linha.

Conheça também:

DONUT PROJECT 2021 - VBA Function:  Como Rastrear o Google Maps (Coordenadas Geográficas) no VBA Excel?

DONUT PROJECT 2021 - VBA Function:  Crie Acrônimos a partir de Strings de Texto

DONUT PROJECT 2021 - VBA Function:  Convertendo uma Matrix num Vetor - Convert Matrix to a Vector

DONUT PROJECT 2021 - VBA Function:  Como tornar o Formulário Transparente no MS Excel?

DONUT PROJECT 2021 - VBA Function:  Faça Buscas no Google a Partir da Célula do MS Excel - Search Google From a Cell

DONUT PROJECT 2021 - VBA Function:  Decompondo um Nome nas Dimensões de uma Matriz

DONUT PROJECT 2021 - VBA Function: Extraindo o Último Sobrenome de um Nome Completo ou a Última Palavra de uma Frase

DONUT PROJECT 2021 - VBA Function:  Extraindo o Segundo Nome de um Nome Completo ou a Segunda Palavra de uma Frase

DONUT PROJECT 2021 - VBA Function: Extraindo o Primeiro Nome ou  a Primeira Palavra de uma Frase


Série Piece of Cake


Séries Donut


Leia também:

eBook: Série DONUT PROJECT 2015: Projetos e Códigos de Visual Basic for Applications - Autor: André Luiz Bernardes

eBook: Série Top 10 Funções: Top 10 Funções VBA para o Microsoft Excel - Autor: André Luiz Bernardes

eBook: Série Funções Poderosas: 13 Funções Poderosas no MS Excel - Autor: André Luiz Bernardes

eBook: Série Visual Basic For Application: Criando Logs de acesso: Dicas e Códigos de Visual Basic for Applications - Autor: André Luiz Bernardes

eBook: Série VBA Tips: Rastrei seus Dashboards, Scorecards, Reports, Relatórios, Planilhas e Aplicações - Dicas e Códigos - Autor: André Luiz Bernardes

eBook: Série Data Science: Big Data, Como? - Autor: André Luiz Bernardes

eBook: Série Smarter Analytic: 5 Previsões de Big Data - Autor: André Luiz Bernardes


Comente e compartilhe este artigo!

brazilsalesforceeffectiveness@gmail.com

Nenhum comentário:

Postar um comentário

diHITT - Notícias