Notifications
Clear all

Função se no Macro

5 Posts
3 Usuários
0 Reactions
962 Visualizações
(@fr33m4m)
Posts: 6
Active Member
Topic starter
 

Amigos bom dia!

Preciso de uma ajudinha pois já esgotei meu recursos que são poucoa já que estou iniciando agora em macros.
Fiz um macro para importação de um TXT, onde le importa e organiza os dados atribuindo também umas informações, preciso colocar a informação na coluna “K”, que vai depender da coluna “J”, ele vai ver qual a cidade da coluna “J “e dizer a qual grupo pertence.
Para isso fiz a formula usando “se”, que funciona bem quando colo na célula e arrasto manualmente ,mas quando tento incorporar ao macro da erro.
Alguém pode dá uma ajudinha segue os dados.

Fomula que preciso colocar.

=SE(J5="";"";SE(J5="CACHOEIRA";"GRUPO 2";SE(J5="CATU";"GRUPO 2";SE(J5="CONCEICAO DE JACUIPE";"GRUPO 2";SE(J5="CRUZ DAS ALMAS";"GRUPO 2";SE(J5="DIAS DAVILA";"GRUPO 2";SE(J5="DIAS D'AVILA";"GRUPO 2";SE(J5="ESPLANADA";"GRUPO 2";SE(J5="EUNAPOLIS";"GRUPO 2";SE(J5="JEQUIE";"GRUPO 2";SE(J5="LAURO DE FREITAS";"GRUPO 2";SE(J5="MATA DE SAO JOAO";"GRUPO 2";SE(J5="POJUCA";"GRUPO 2";SE(J5="PORTO SEGURO";"GRUPO 2";SE(J5="SALVADOR";"GRUPO 2";SE(J5="SAO FELIX";"GRUPO 2";SE(J5="TEIXEIRA DE FREITAS";"GRUPO 2";SE(J5="VALECA";"GRUPO 2";SE(J5="ACU";"GRUPO RN";SE(J5="MACAU";"GRUPO RN";SE(J5="MOSSORO";"GRUPO RN";SE(J5="NATAL";"GRUPO RN";SE(J5="PARNAMIRIM";"GRUPO RN";SE(J5="SAO GONC AMARANTE";"GRUPO RN";SE(J5="SAO GONCALO AMARANTE";"GRUPO RN";"GRUPO 1")))))))))))))))))))))))))

O que já tenho hoje:

Sub ExibeFormulario()
'impede Mostrar na tela o decorrer do processo
Application.ScreenUpdating = False

'Declaração de variaveis
    Dim CurrentSheet As Worksheet
    Dim Arquivo As Variant
    Dim TempWb As Workbook
    Dim DestinoSh As Worksheet: Set DestinoSh = ThisWorkbook.ActiveSheet
    Dim lin, col, col2, n As Integer
'fixação de colunas e linhas
 n = 1
 lin = 6
 col = 2
 col2 = 3
'Rotirna de busca de arquivo txt do  PIPL na pasta Onde foi Salvo
   Arquivo = Application.GetOpenFilename("Arquivos Texto(*.*), *.*")
    
    
   'Importação do arquivo
    Workbooks.OpenText Filename:=Arquivo, _
        Origin:=xlMSDOS, _
        StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, 1), Array(2, _
        1), Array(35, 1), Array(54, 1), Array(68, 1), Array(81, 1), Array(90, 1), Array(101, 1), _
        Array(112, 1)), TrailingMinusNumbers:=True


'Exclusão de  informação não necessarias ou cabeçalhos repetidos

Do While n <= 2000
 If Cells(lin, col).Value = "TOTAL LOCALIDADE" Then
 Cells(lin, col).EntireRow.Select
 Selection.Delete Shift:=xlUp
 
 
 ElseIf Cells(lin, col).Value = "PIJTB -  PETROLEO BRASILEIRO   SA" Then
 Cells(lin, col).EntireRow.Select
 Selection.Delete Shift:=xlUp
 
 
 ElseIf Cells(lin, col).Value = "E&P/RNCE-GER E&P RN E CE" Then
 Cells(lin, col).EntireRow.Select
 Selection.Delete Shift:=xlUp
 
 
 ElseIf Cells(lin, col).Value = "TOTAL NUCLEO AMS" Then
 Cells(lin, col).EntireRow.Select
 Selection.Delete Shift:=xlUp
 
 ElseIf Cells(lin, col).Value = "NOME CREDENCIADO" Then
 Cells(lin, col).EntireRow.Select
 Selection.Delete Shift:=xlUp
 
 ElseIf Cells(lin, col2).Value = "RELACAO CREDENCIA" Then
 Cells(lin, col).EntireRow.Select
 Selection.Delete Shift:=xlUp
 
 ElseIf Cells(lin, col2).Value = "RELACAO CREDENCIAD" Then
 Cells(lin, col).EntireRow.Select
 Selection.Delete Shift:=xlUp
 
 ElseIf Cells(lin, col).Value = "TOTAL EMPRESA PAGADORA" Then
 Cells(lin, col).EntireRow.Select
 Selection.Delete Shift:=xlUp
Else

 lin = lin + 1
 End If
 n = n + 1
 Loop
'Formatação do Arquivo
    Range("A1").Select
    ActiveCell.FormulaR1C1 = "=IF(RC[2]="""","""",IF(LEN(RC[2])<=14,""F"",""J""))"
    Range("A1").Select
    Selection.AutoFill Destination:=Range("A:A"), Type:=xlFillDefault
    Range("A:A").Select
    Range("E4:H32333").Select
    Selection.Style = "Currency"
    Range("D:D").HorizontalAlignment = xlRight

    Range("J4").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(R[-1]C[-7]="""",IF(R[-1]C[-8]<>"""",R[-1]C[-8],""""),R[-1]C)"
    Range("J4").Select
    Selection.AutoFill Destination:=Range("J4:J32333"), Type:=xlFillDefault
    Range("J:J").Select

        'Nome na Planilha Ativa em B2
        nomeB2 = CStr(ActiveSheet.Range("B2").Value)

        Set CurrentSheet = ActiveSheet

        On Error Resume Next

        'copia todas as células da planilha ativa
        CurrentSheet.Cells.Copy

        'Cria a Nova PASTA (ARQUIVO)
        Set Wkb = Worksheet.Add

        'cola somente os valores na planilha Ativa da nova Pasta,
        'sem formulas e mantenndo a formatação
        With ActiveSheet.Range("A1")
          .PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
          .PasteSpecial Paste:=xlFormats
        End With

        Application.CutCopyMode = False

        'Define os Novos Nomes - Planilha(ABA) e Pasta(Arquivo)
        novoNome = nomeB2

        'Renomeia a planilha nova com
        'o Nome que estava em B2
        With ActiveSheet
            .Name = novoNome
            .Range("A1").Select
        End With

        Range("A1").Select
        Range("A4").Value = "TIPO"
        Range("J4").Value = "CIDADE"
        Rows("4:4").Select
        Selection.AutoFilter
        Cells.Select
        Cells.EntireColumn.AutoFit
        Range("A1").Select
        Range("H1").Style = "date"
        'Enibe a mensagem se a pasta já existir
        'Com essa instrução a Pasta será substiutida sem questionamento
        Application.DisplayAlerts = False
        
      
 MsgBox ("Importação Concluida")
End Sub

Segue também o arquivo com o macro e um txt ele deve importar.

 
Postado : 23/09/2015 6:05 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Quanto a formula, eu tenho vários posts que demonstram como resolver.
use a pesquisa...

Sub AleVBA_17461()
Range("B1").Formula = "=IF(J5="""","""",IF(J5=""CACHOEIRA"",""GRUPO 2"",IF(J5=""CATU"",""GRUPO 2"",IF(J5=""CONCEICAO DE JACUIPE"",""GRUPO 2"",IF(J5=""CRUZ DAS ALMAS"",""GRUPO 2"", IF(J5=""DIAS DAVILA"",""GRUPO 2"",IF(J5=""DIAS D'AVILA"",""GRUPO 2"",IF(J5=""ESPLANADA"",""GRUPO 2"",IF(J5=""EUNAPOLIS"",""GRUPO 2"",IF(J5=""JEQUIE"",""GRUPO 2"",IF(J5=""LAURO DE FREITAS"",""GRUPO 2"",IF(J5=""MATA DE SAO JOAO"",""GRUPO 2"",IF(J5=""POJUCA"",""GRUPO 2"",IF(J5=""PORTO SEGURO"",""GRUPO 2"",IF(J5=""SALVADOR"",""GRUPO 2"",IF(J5=""SAO FELIX"",""GRUPO 2"",IF(J5=""TEIXEIRA DE FREITAS"",""GRUPO 2"", IF(J5=""VALECA"",""GRUPO 2"",IF(J5=""ACU"",""GRUPO RN"",IF(J5=""MACAU"",""GRUPO RN"", IF(J5=""MOSSORO"",""GRUPO RN"",IF(J5=""NATAL"",""GRUPO RN"",IF(J5=""PARNAMIRIM"",""GRUPO RN"", IF(J5=""SAO GONC AMARANTE"",""GRUPO RN"",IF(J5=""SAO GONCALO AMARANTE"",""GRUPO RN"",""GRUPO 1"")))))))))))))))))))))))))"
Range("B1").AutoFill Destination:=Range("B1:B" & Cells(Rows.Count, 1).End(xlUp).Row)

'Caso queira tirar a formula e colar so o resultado
'Range("B1:B" & Cells(Rows.Count, 1).End(xlUp).Row).Value = Range("B1:B" & Cells(Rows.Count, 1).End(xlUp).Row).Value
End Sub

Considerando que você pretende inserir a formula em B1 e arrastar para baixo.

Att

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 23/09/2015 11:40 am
(@mprudencio)
Posts: 2749
Famed Member
 

Leva a mal nao mas uma formula SE aninhada desse jeito e desse tamanho passou da hora de fazer uma pequena tabela em qualquer lugar da planilha com as condições e usar um simples PROCV.

E se hoje sua tabela tem 50 condições a ser consideradas com o procv vc pode levar pra 50000 que nao vai fazer diferença.

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 23/09/2015 12:42 pm
(@mprudencio)
Posts: 2749
Famed Member
 

outra coisa essa mesma formula se vc usar um ou junto ela fica com a metade do tamanho

Veja um exemplo:

Se vc ao contrario de escrever se(J5 ="CACHOEIRA";"GRUPO2";SE(J5 ="CATU";"GRUPO2".......

Vc pode escrever assim: SE(OU(J5="CACHOEIRA";J5 ="CATU"; AQUI VC COLOCA TODAS AS CONDIÇÕES QUE PRECISAR SEPARANDO POR PONTO E VIRGULA);"GRUPO2"......

ao inves de

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 23/09/2015 1:10 pm
(@fr33m4m)
Posts: 6
Active Member
Topic starter
 

alexandrevba ,
Muito obrigado pela ajuda, como estou começando ainda me enrolo muito!

MPrudencio,
Eu já havia tentado Usando "SE(ou", mas me enrolei todo, vou usar a Dica do Alexandre e testarei também de outras maneiras para poder fixar o aprendizado!

Desde de já agradeço a ajuda de vocês!

 
Postado : 24/09/2015 4:56 am