
OreiaG
-
Posts
390 -
Cadastrado em
Tópicos solucionados
-
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
-
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")
-
O post de OreiaG em Como escolher que linha vai ser gerada a etiqueta desse arquivo? foi marcado como solução
-
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.
-
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
-
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)
-
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.
-
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
-
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.
-
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.
-
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
-
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
-
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)));"")
-
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
-
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
-
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.
-
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"
-
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)));"")
-
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
___________________________________________________________________________________________________
-
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
-
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))
-
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)
-
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
-
O post de OreiaG em Contar e enumerar 20 semanas com mensagens. foi marcado como solução
Na fórmula substitua HOJE() por A2.
-
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