Jump to content

Agilizar trabalho com matrizes no Excel


Recommended Posts

Boa tarde,

 

Todos sabemos como é chato trabalhar com matrizes no Excel utilizando o substituir ou criando célula por célula... com o intuito de agilizar esse processo criei uma solução em VBA.

 

Como adicionar ao seu projeto:

1º copie o código abaixo

 

Option Explicit
Sub Matriz()
'Objetivo: Criar referências às matrizes automaticamente.
'Autor: U.L.M.S (@PedroSaavas)
'Email: pedrosaavas@gmail.com
'Mantenha a atribuição ao autor como forma de respeito à propriedade intelectual.
'Favor não usar essa macro para obter vantagem financeira.

Dim ws As Worksheet
Dim Mtz As Range, Mcel As Range, Rng As Range, cel As Range, Fmt As Range
Dim Titulo As String
On Error Resume Next
Application.DisplayAlerts = False

Set ws = ActiveSheet
Titulo = "Formatação de Matrizes - By @PedroSaavas"

'Seleciona os números da matriz
Set Mtz = ws.Application.InputBox("Selecione os Números da Matriz", Titulo, Type:=8)
If Mtz.Cells.Count < 1 Then Exit Sub

'Seleciona as linhas da Matriz
Set Rng = ws.Application.InputBox("Selecione as Linhas da Matriz", Titulo, Type:=8)
If Mtz.Cells.Count < 1 Then Exit Sub

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

   'Aplica referências nas células das linhas da matriz
   For Each cel In Rng
    For Each Mcel In Mtz
      If Not IsEmpty(cel) And cel = Mcel Then
         cel = "=" & Mcel.Address
      End If
     Next Mcel
   Next cel
   
   'Aplica formatação nas linhas
   For Each Fmt In Rng
         Fmt.NumberFormat = "00"
         Fmt.Errors(xlInconsistentFormula).Ignore = True
   Next Fmt
MsgBox "Processo Finalizado. " & Rng.Rows.Count & " Linhas Formatadas." & vbNewLine & vbNewLine & "Substitua os NÚMEROS DA MATRIZ por dezenas de sua escolha.", vbInformation, Titulo

Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic

On Error GoTo 0
Application.DisplayAlerts = True
ActiveCell.Select
End Sub


2º No Excel, digite Alt+F11 para abrir o VBA


3º clique em Inserir >> Módulo


4º cole o código no módulo


5º adicione um botão ou imagem


6º clique sobre o botão ou imagem com o botão direito do mouse e  >>  atribuir a macro “Matriz”

 

7º salvar planilha no "xlsm" (Pasta de trabalho habilitada para Macros)

 

Segue planilha de exemplo:

https://mega.nz/#!258jxaCY!86yHMyDqSdgOcUOSlavee-nWvENMD75pPwYyVx-wUIs

 

Obs.: clique em baixar atráves do navegador

 

Abraços.

 

@pedrosaavas

 

Como usar a planilha de exemplo:

 

2di21a8.jpg

 

14k9ueh.jpg

 

106aczd.jpg

 

2zxqtk5.jpg

 

15x95l0.jpg

 

4uxc3q.jpg

 

 

 

 

  • Like 15
  • Thanks 1
Link to comment
Share on other sites

@pedrosaavas

Por favor uma explicação.

 Eu tenho essa matriz abaixo 10-8-7-8=15 como eu formataria ela com sua planilha usando essas dezenas 12-13-14-15-16-17-18-19 ?

01 03 05 06 07 08 09 10
01 03 04 05 06 07 08 09
01 02 04 05 06 08 09 10
01 02 03 04 06 07 08 10
01 02 03 04 05 06 08 09
01 02 03 05 06 07 09 10
02 03 04 05 07 08 09 10
01 02 04 06 07 08 09 10
02 03 04 05 06 07 09 10
01 02 03 05 06 07 08 10
02 03 04 05 06 08 09 10
01 02 04 05 07 08 09 10
01 03 04 05 06 07 08 10
01 02 03 04 05 07 09 10
01 02 03 04 06 07 08 09

  • Like 1
Link to comment
Share on other sites

1 minuto atrás, cerealkiller disse:

@pedrosaavas

Por favor uma explicação.

 Eu tenho essa matriz abaixo 10-8-7-8=15 como eu formataria ela com sua planilha usando essas dezenas 12-13-14-15-16-17-18-19 ?

01 03 05 06 07 08 09 10
01 03 04 05 06 07 08 09
01 02 04 05 06 08 09 10
01 02 03 04 06 07 08 10
01 02 03 04 05 06 08 09
01 02 03 05 06 07 09 10
02 03 04 05 07 08 09 10
01 02 04 06 07 08 09 10
02 03 04 05 06 07 09 10
01 02 03 05 06 07 08 10
02 03 04 05 06 08 09 10
01 02 04 05 07 08 09 10
01 03 04 05 06 07 08 10
01 02 03 04 05 07 09 10
01 02 03 04 06 07 08 09

 

1º Em Números da Matriz você tem que colocar os números que compõem sua matriz. no caso de 1 a 10

2º Colar as linhas da matriz onde quiser

3º Rodar a macro, seguindo as informações
4º substituir os Números da Matriz por suas dezenas  12-13-14-15-16-17-18-19

 

 

  • Like 2
Link to comment
Share on other sites

Agora, pedrosaavas disse:

 

1º Em Números da Matriz você tem que colocar os números que compõem sua matriz. no caso de 1 a 10

2º Colar as linhas da matriz onde quiser

3º Rodar a macro, seguindo as informações
4º substituir os Números da Matriz por suas dezenas  12-13-14-15-16-17-18-19

 

 

Perfeito, entendi, obrigadaço PedroSarava, foi o melhor sarava dos últimos tempos.

Link to comment
Share on other sites

4 minutos atrás, pedrosaavas disse:

 

1º Em Números da Matriz você tem que colocar os números que compõem sua matriz. no caso de 1 a 10

2º Colar as linhas da matriz onde quiser

3º Rodar a macro, seguindo as informações
4º substituir os Números da Matriz por suas dezenas  12-13-14-15-16-17-18-19

 

 

Creio que este exemplo pra mim também é o suficiente.

 

Valeu Sobrinho @cerealkiller !!!

@pedrosaavas Parabéns e muitíssimo obrigado por tudo !!!

 

 

Um abraço!

 

Link to comment
Share on other sites

Agora, dois disse:

 

Creio que este exemplo pra mim também é o suficiente.

 

Valeu Sobrinho @cerealkiller !!!

@pedrosaavas Parabéns e muitíssimo obrigado por tudo !!!

 

 

Um abraço!

 

 

Valeu @dois, @cerealkiller

 

É bem simples eu que sou péssimo para explicar... kkk

Agora que entendeu é só copiar o código para seus projetos. 

 

Obs.: Queria poder contribuir mais, mas estou meio sem tempo.

 

Abraços. 

  • Like 1
Link to comment
Share on other sites

8 minutos atrás, cerealkiller disse:

Fica aparecendo essa linha azul, é normal isso?

14bixkn.png

@pedrosaavas

Depois que você responder essa eu vou perguntar se existe um meio automatizado (esse cereal é folgado mesmo) de se fazer com o conta-se, é só uma pergunta.

Quando tiver tempo, sem querer te aborrecer.

2lbck5.png

Edited by cerealkiller
Link to comment
Share on other sites

3 minutos atrás, pedrosaavas disse:

 

Valeu @dois, @cerealkiller

 

É bem simples eu que sou péssimo para explicar... kkk

Agora que entendeu é só copiar o código para seus projetos. 

 

Obs.: Queria poder contribuir mais, mas estou meio sem tempo.

 

Abraços. 

 

 

@pedrosaavas

Usando a sua planilha que baixei, fiz o exemplo do Sobrinho cereal_KID e consegui,

 

Vou fazer umas adaptações pra facilitar aqui pra mim.

Mais uma vez, muitíssimo obrigado por tudo!

 

Um abraço!

 

Link to comment
Share on other sites

2 horas atrás, pedrosaavas disse:

Sub Matriz() Dim ws As Worksheet Dim Mtz As Range, Mcel As Range, Rng As Range, cel As Range, Fmt As Range On Error Resume Next Application.DisplayAlerts = False Set ws = ActiveSheet 'Seleciona os números da matriz Set Mtz = ws.Application.InputBox("Selecione os Números da Matriz", Type:=8) If Mtz.Cells.Count < 1 Then Exit Sub 'Seleciona as linhas da Matriz Set Rng = ws.Application.InputBox("Selecione as Linhas da Matriz", Type:=8) If Mtz.Cells.Count < 1 Then Exit Sub Application.ScreenUpdating = False Application.Calculation = xlCalculationManual 'Aplica referências nas células das linhas da matriz For Each cel In Rng For Each Mcel In Mtz If Not IsEmpty(cel) And cel = Mcel Then cel = "=" & Mcel.Address End If Next Mcel Next cel 'Aplica formatação nas linhas For Each Fmt In Rng Fmt.NumberFormat = "00" Fmt.Errors(xlInconsistentFormula).Ignore = True Next Fmt Application.ScreenUpdating = True Application.Calculation = xlCalculationAutomatic MsgBox "Processo Finalizado. " & Rng.Rows.Count & " Linhas Formatadas.", vbInformation, "Tratamento de Matrizes" On Error GoTo 0 Application.DisplayAlerts = True End Sub

 

Excelente!

Obrigado.

 

8-)

...

  • Like 5
Link to comment
Share on other sites

36 minutos atrás, Wata disse:

 

Excelente!

Obrigado.

 

8-)

...

 

Valeu!

 

Só uma observação... a macro aplica aquela formatação do número .

 

'Aplica formatação nas linhas
   For Each Fmt In Rng
         Fmt.NumberFormat = "00"
         Fmt.Errors(xlInconsistentFormula).Ignore = True
   Next Fmt
Link to comment
Share on other sites

7 minutos atrás, pedrosaavas disse:

 

Valeu!

 

Só uma observação... a macro aplica aquela formatação do número .

 


'Aplica formatação nas linhas
   For Each Fmt In Rng
         Fmt.NumberFormat = "00"
         Fmt.Errors(xlInconsistentFormula).Ignore = True
   Next Fmt

Verdade.

8-)

...

 

  • Like 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...