Ir ao conteúdo

OreiaG

Membro Pleno
  • Posts

    390
  • Cadastrado em

Tópicos solucionados

  1. O post de OreiaG em Botão localizar corespondencia e ir para celula encontrada foi marcado como solução   
    Olá, @Janilson Brito
    Veja se o código abaixo lhe atende.
     
    Sub BuscaData() Dim rng As Range Set rng = Sheets("DADOS - DIA").Rows(4).Find(Sheets("Passagem de Turno I").[D6]) If Not rng Is Nothing Then Sheets("DADOS - DIA").Activate: rng.Activate End Sub  
  2. O post de OreiaG em Preenchimento automático no Excel que se adapte de acordo com a aba da planilha foi marcado como solução   
    Considerei que os nomes das planilhas (que você chama de abas) estão a partir de A3.
     
    =INDIRETO("'"&A3&"'!A1")  
  3. O post de OreiaG em Como escolher que linha vai ser gerada a etiqueta desse arquivo? foi marcado como solução   
  4. O post de OreiaG em Criando Array de datas a partir de uma célula-strin e Fórmula TEXTSPLIT - Excel foi marcado como solução   
    Em C2, retorna 10-01
    =EXT.TEXTO(B2;LOCALIZAR("-";B2;1)-2;5)  
     
    Em D2, retorna 07-01
    =EXT.TEXTO(B2;LOCALIZAR("-";SUBSTITUIR(B2;C2;"");1)+3;5)  
     
    Em E2, retorna 03-01
    =EXT.TEXTO(B2;LOCALIZAR("-";SUBSTITUIR(SUBSTITUIR(B2;C2;"");D2;""))+8;5)  
     
    Em F2, retorna 02-03
    =EXT.TEXTO(B2;LOCALIZAR("-";SUBSTITUIR(SUBSTITUIR(SUBSTITUIR(B2;C2;"");D2;"");E2;""))+13;5)  
     
    Se precisar, selecione C2:F2 e arraste para baixo.
  5. O post de OreiaG em Classificar em Ordem Crescente com Colunas Adjacentes foi marcado como solução   
    Experimente o código abaixo.
     
    Sub ClassificaDados() [I1:J60].Copy: [I1].PasteSpecial xlValues [H1:J60].Sort Key1:=[J1], Order1:=xlAscending End Sub  
  6. O post de OreiaG em FORMULA CONT.SES EXCEL - contar entre dois números limites foi marcado como solução   
    Veja se esta abaixo atende.
     
    =CONT.SES(F$2:F$121;">="&I3;F$2:F$121;"<="&J3)  
  7. O post de OreiaG em Copiar e Colar Gráfico Excel foi marcado como solução   
    Ao fazer Copiar/Colar o gráfico colado manterá o vínculo com os dados da planilha de origem.
    Experimente fazer uma cópia da planilha: clique com o direito na guia da Planilha_01 / Mover ou copiar / Criar uma cópia / OK.
    Altere o nome da cópia criada se desejar.
  8. O post de OreiaG em Mover o conteúdo da linha conforme status da célula. foi marcado como solução   
    Seguem duas soluções.
     
    Este primeiro código deve ser instalado em um módulo comum (exemplos: no Módulo1 ou no Módulo2 ou ...).
    Utilize-o no caso de a sua tabela de dados já estiver montada. Funciona com qualquer quantidade de linhas na tabela.
    Após executá-lo uma única vez, se necessário, aí passe a utilizar somente o segundo código abaixo.
    Sub MoveDados() Dim LR As Long With Sheets("Planilha1") LR = .Cells(Rows.Count, 3).End(3).Row .Range("C1:D" & LR).AutoFilter 1, 1 If .AutoFilter.Range.Columns(3).SpecialCells(12).Count < 2 Then .AutoFilterMode = False: Exit Sub .Range("C2:D" & LR).SpecialCells(12).Copy Sheets("Planilha2").Cells(Rows.Count, 3).End(3)(2) .Range("C2:D" & LR).SpecialCells(12).Value = "" .AutoFilterMode = False .Range("C2:D" & LR).SpecialCells(4).Delete Shift:=xlUp End With End Sub  
     
    Este segundo código deve ser instalado no módulo da Planilha1 e moverá os dados, conforme o critério, assim que eles forem inseridos por digitação ou via Copiar/Colar.
    Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column < 3 Or Target.Column > 4 Or Application.CountA(Cells(Target.Row, "C").Resize(, 2)) < 2 Or Cells(Target.Row, "C") <> 1 Then Exit Sub Cells(Target.Row, "C").Resize(, 2).Copy Sheets("Planilha2").Cells(Rows.Count, 3).End(3)(2) Cells(Target.Row, "C").Resize(, 2) = "" Cells(Target.Row, "C").Resize(, 2).Delete Shift:=xlUp End Sub  
  9. O post de OreiaG em Criar fórmula para identificar os 3 próximos vencimentos. foi marcado como solução   
    Para aplicar cada uma das três regras mantenha selecionado o intervalo A3:C8 / Formatação Condicional / Usar uma fórmula ...
     
    Para destacar o primeiro próximo vencimento utilize a fórmula abaixo, e para o segundo e o terceiro vencimentos, altere o número 1 no final da fórmula para 2 e para 3 respectivamente.
    =$B3=MENOR(SE($B$3:$B$8>HOJE();$B$3:$B$8);1)  
    obs. o terceiro próximo vencimento é 28/01/25 e não 17/02/25 como você destacou manualmente na planilha.
  10. O post de OreiaG em Digitar e atualizar valores positivos e negativos na mesma célula foi marcado como solução   
    Cole o código abaixo no módulo da planilha de interesse.
    Private Sub Worksheet_Change(ByVal Target As Range) Dim oldN As Double, newN As Double If Target.Address <> "$A$6" Or Target.Value = "" Then Exit Sub On Error GoTo fim Application.EnableEvents = False newN = Target.Value Application.Undo oldN = Target.Value Target.Value = oldN + newN fim: Application.EnableEvents = True End Sub  
    ... atualiza para 122, digito 380 atualiza o valor para 302 ...
    A sua calculadora está precisando de aferição. O resultado deveria ser 502.
     
  11. O post de OreiaG em Rodar macro automaticamente dependendo de CheckBox marcada foi marcado como solução   
    Veja se ajuda.
     
    Simplifiquei e alterei o código Consec, assim o código Temporizador não é mais necessário.
    Coloquei intervalo de 5 segundos somente para efeitos dos seus testes, altere depois para 1 minuto, conforme o seu  código original.
    Sub Consec() Cells(Rows.Count, "D").End(3)(2) = Cells(Rows.Count, "D").End(3) + 1 If Planilha1.CheckBox1 = True Then Application.OnTime (Now + TimeValue("00:00:05")), "Consec.Consec" End Sub  
    E acrescente o código abaixo vinculado ao botão Parar.
    Private Sub CommandButton2_Click() Planilha1.CheckBox1 = False End Sub  
  12. O post de OreiaG em vba criar etiquetas de Produtos foi marcado como solução   
    Fala @deejaywesley.
     
    Parabéns pelas explicações e pelo arquivo anexado. Ficou super fácil para entender o que você quer.
     
    Apenas uma dica, não é necessário compactar arquivos sem macro para anexar aqui no fórum.
     
    Veja se o código abaixo faz o que você quer. Considerei que a Plan1 já estará convenientemente formatada (células, linhas e colunas).
     
    Sub Etiquetas() Dim wsO As Worksheet, wsD As Worksheet, r, k As Long, x As Long, v As Long, m As Long Set wsO = Sheets("Plan2"): Set wsD = Sheets("Plan1") If wsO.[A3] = "" Then Exit Sub wsD.Columns("A:F") = "" For k = 3 To wsO.Cells(Rows.Count, 1).End(3).Row With wsD .Cells(x + 1 + m, v + 1).Resize(4) = Application.Transpose([{"CÓDIGO:", "PREÇO:","QNTD:" , "PRODUTO:"}]) For Each r In Array(wsO.Cells(k, 1), wsO.Cells(k, 8), wsO.Cells(k, 7), wsO.Cells(k, 2)) .Cells(x + 1 + m, v + 2) = r: x = x + 1 Next r x = 0: v = v + 1 If v < 4 Then v = v + 1 Else: v = 0 x = 0: m = m + 5 End If End With Next k End Sub  
  13. O post de OreiaG em barra de pesquisa pelo nome do funcionario foi marcado como solução   
    Utilize na Validação de Dados a lista de nomes retornada pela fórmula abaixo arrastada pela coluna.
     
    =SEERRO(ÍNDICE(B$4:B$44;MENOR(SE(I$4:I$44="ATIVO";LIN(B$1:B$41));LINS($A$1:A1)));"")  
  14. O post de OreiaG em VBA Procurar cabeçalho em plan2 se encontrar copiar e colar foi marcado como solução   
    Olá, @deejaywesley.
     
    Veja se o código abaixo lhe atende.
    Não considerei a possibilidade de a tabela da Plan2 ter mais linhas com dados do que a tabela da Plan1, se isso pode ocorrer, então informe o que você deseja fazer nesse caso.
     
    Sub ReplicaDados() Dim r As Range, rc As Range, rP1 As Range, rP2 As Range, LR As Long LR = Sheets("Plan1").Cells(Rows.Count, 1).End(3).Row Set rP1 = Sheets("Plan1").Range("A1", Sheets("Plan1").Cells(1, Columns.Count).End(1).Address) Set rP2 = Sheets("Plan2").Range("A3", Sheets("Plan2").Cells(3, Columns.Count).End(1).Address) Application.ScreenUpdating = False For Each r In rP2 Set rc = rP1.Find(r.Value) rc.Offset(1).Resize(LR - 1).Copy r.Offset(1) Next r End Sub  
  15. O post de OreiaG em Como passar as informações de uma tabela para outra? foi marcado como solução   
    No seu exemplo do post #3 a busca é feita na tabela da esquerda, porém nesse último exemplo, post #15, a busca é feita na tabela da direita, então, obviamente a fórmula que passei não retorna o resultado esperado.
     
    exemplo do post #3, a fórmula que passei >>> A$2:A$22=G2 >>> busca em A:A o valor de G
    último exemplo, a fórmula que você elaborou  >>> $A$3:$A$1561=T4 >>> busca em A:A o valor de T, sendo que o correto é >>> T$4:T$1550=A3 >>> ou seja, busca em T:T o valor de A
     
    Experimente a fórmula abaixo:
    =PROC(2;1/(T$4:T$1550=A3)/(W$4:W$1550=C3)/(V$4:V$1550=D3)/(AA$4:AA$1550=L3);(Y$4:Y$1550))  
    obs. para arrastar a fórmula pela coluna não é necessário colocar o cifrão na referência da coluna, como você fez, basta colocar na referência da linha, assim: basta T$4, não é necessário colocar $T$4
  16. O post de OreiaG em Hora automática na planilha atualizável foi marcado como solução   
    Olá, @Emerson Lomas.
     
    Se você não responder com precisão a todos os detalhes que eu pedi no post #8 então eu não consigo nem dar a partida em uma tentativa de ajuda.
  17. O post de OreiaG em Você inseriu número excessivo de argumentos para esta função foi marcado como solução   
    _______________________________________________________________________________________________________
    Contar o número de vezes que uma pessoa reespondeu "a" nas linhas 1, 4, 7, 10 e 13.
    =SOMARPRODUTO(--(MOD(LIN(A1:A15)-1;3)=0);--(B1:B15="a")) _______________________________________________________________________________________________________
    Contar o número de vezes que uma pessoa reespondeu "a" nas linhas 2, 5, 8, 11 e 14.
    =SOMARPRODUTO(--(MOD(LIN(A1:A15)+1;3)=0);--(B1:B15="a")) _______________________________________________________________________________________________________
    Contar o número de vezes que uma pessoa reespondeu "a" nas linhas 3, 6, 9, 12 e 15.
    =SOMARPRODUTO(--(MOD(LIN(A1:A15)+3;3)=0);--(B1:B15="a")) _______________________________________________________________________________________________________
     
    obs. para contar "b" repita a respectiva fórmula e coloque "b" no lugar de "a"
  18. O post de OreiaG em Cálculo de variação percentual de custos com algumas células vazias. =) foi marcado como solução   
    Olá, @Kamila Cordeiro.
     
    Veja se a fórmula abaixo lhe atende.
    É fórmula matricial, então finalize-a com Ctrl+Shift+Enter, e não somente Enter.
     
    =SEERRO(SE([@[Custo de Compra]]>0;([@[Custo de Compra]]-ÍNDICE(Tabela1[@[Custo Mês]:[Custo M-5]];MENOR(SE(ÉNÚM(Tabela1[@[Custo Mês]:[Custo M-5]]);COL(A1:F1));1)))/ÍNDICE(Tabela1[@[Custo Mês]:[Custo M-5]];MENOR(SE(ÉNÚM(Tabela1[@[Custo Mês]:[Custo M-5]]);COL(A1:F1));1));(ÍNDICE(Tabela1[@[Custo Mês]:[Custo M-5]];MENOR(SE(ÉNÚM(Tabela1[@[Custo Mês]:[Custo M-5]]);COL(A1:F1));1))-ÍNDICE(Tabela1[@[Custo Mês]:[Custo M-5]];MENOR(SE(ÉNÚM(Tabela1[@[Custo Mês]:[Custo M-5]]);COL(A1:F1));2)))/ÍNDICE(Tabela1[@[Custo Mês]:[Custo M-5]];MENOR(SE(ÉNÚM(Tabela1[@[Custo Mês]:[Custo M-5]]);COL(A1:F1));2)));"")  
  19. O post de OreiaG em VBA fórmula Filtro não vai foi marcado como solução   
    ___________________________________________________________________________________________________
    1. cole a fórmula abaixo em CADASTRO!B10
    =FILTRO(Planilha1!B2:B37;CADASTRO!B6=Planilha1!A2:A37;"")  
    ___________________________________________________________________________________________________
    2. cole a fórmula abaixo em CADASTRO!B12
    =SEERRO(B8*B10;0)  
    ___________________________________________________________________________________________________
    3. exclua a linha abaixo do seu código
    Range("B10").ClearContents
     
    ___________________________________________________________________________________________________
  20. O post de OreiaG em excel cortar caracteres de coluna foi marcado como solução   
    Veja se este código lhe atende.
     
    Sub TruncaNúmeros() Dim r As Range Columns(1).NumberFormat = "@" For Each r In Range("A2:A" & Cells(Rows.Count, 1).End(3).Row) r.Value = Left(r.Value, 45) Next r End Sub  
  21. O post de OreiaG em Como somar total de lançamentos não duplicados pelo tipo de documento? foi marcado como solução   
    Veja se esta fórmula lhe atende.
     
    Em D2 coloque somente NF e em D3 coloque somente REC.
    Cole uma cópia da fórmula abaixo em E2 e arraste até E3.
     
    =SOMA(--(FREQÜÊNCIA(SE(A$2:A$11=D2;B$2:B$11);B$2:B$11)>0))  
  22. O post de OreiaG em Qual fórmula devo usar foi marcado como solução   
    A fórmula abaixo funciona para o padrão de dados da coluna E da imagem que você postou.
     
    =C3+EXT.TEXTO(E3;3;1)  
  23. O post de OreiaG em desorganizar os números que estão em ordem foi marcado como solução   
    Um código escrito em linguagem VBA e adequadamente instalado e operado em um arquivo Office torna-se uma macro, então não faz sentido dizer "macro ou VBA", visto que não são alternativas entre si: macro é um objeto e VBA é uma a linguagem.
     
    Para a sua questão, experimente o código abaixo.
     
    Sub ReplicaAleat() Dim c As Range, i As Integer, ii As Integer Range("F16:O25") = "" i = Int(16 + Rnd * (10)): ii = Int(6 + Rnd * (10)) For Each c In Range("F5:O14") Do Until Cells(i, ii) = "" i = Int(16 + Rnd * (10)): ii = Int(6 + Rnd * (10)) Loop Cells(i, ii) = c.Value Next c End Sub  
  24. O post de OreiaG em Contar e enumerar 20 semanas com mensagens. foi marcado como solução   
    Na fórmula substitua HOJE() por A2.
  25. O post de OreiaG em Calcular o número de meses entre duas datas foi marcado como solução   
    Experimente:
    =SE(E(ANO(E11)=ANO(E12);ANO(E11)=ANO(HOJE()));0;SE(ANO(E12)=ANO(HOJE());DATADIF(E11;DATA(ANO(E12)-1;12;31);"m")+1;DATADIF(E11;E12;"m")+1+(1*DIA(E11)>DIA(E12))-(1*DIA(E12)=1)))  
     

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!