-
Posts
3.601 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Livros
Cursos
Análises
Fórum
Tudo que Midori postou
-
Excel dividir 8 nomes para 7 mil clientes
Midori respondeu ao tópico de corujayan em Microsoft Office e similares
Isso pode ser feito com macro para deixar o processo automatizado ou com fórmulas. Se entendi o que quer fazer, uma forma simples pode ser com duas tabelas, uma com o cadastro dos funcionários e outra com dos clientes com a relação de funcionários, p.ex, Na coluna E vai a fórmula para gerar o número aleatório =ALEATÓRIO()*100 e na G tem a fórmula que busca o funcionário, =PROCV(MOD(LINS($F$3:F3);CONT.VALORES(TLB_FUNC[Funcionários]));TLB_FUNC;2;0) Aí é só colocar a coluna Aleatório em ordem, copiar e colar valores como nas colunas seguintes com os três exemplo de distribuição. -
Normalmente os códigos são postados no próprio tópico no formato texto com o botão CODE <>. Anexos são úteis em alguns casos, mas nesse só será um passo a mais para quem vai te ajudar. Pelo título do tópico parece uma questão sobre a linguagem C...
-
Excel Preencher uma coluna com base em outra
Midori respondeu ao tópico de cjsantos em Microsoft Office e similares
Para buscar os nomes da outra planilha você pode usar a fórmula PROCV. -
Excel Msgbox retornando um valor contido em uma célula
Midori respondeu ao tópico de marcospires1 em Microsoft Office e similares
@marcospires1 A sub CriaPopUp só precisa ser executada uma vez ao abrir a planilha, Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) If Not Application.Intersect(Target, [A12:A40]) Is Nothing Then Dim Quantidade As String Quantidade = Busca(Target) If Quantidade <> "" Then Call MostraPopUp(Quantidade) End If Cancel = True End If End Sub Function Busca(ByVal Codigo As String) As String Dim Celula As Range Set Celula = ThisWorkbook.Sheets("Impostos").[A:A].Find( _ What:=Codigo, LookIn:=xlValues, LookAt:=xlWhole) If Not Celula Is Nothing Then Busca = Celula.Offset(0, 4).Value End If End Function Sub CaixaMaster() End Sub Sub CriaPopUp() Dim Controle As CommandBar On Error GoTo Adiciona CommandBars("PopUpPersonalizado").Delete Adiciona: Set Controle = CommandBars.Add("PopUpPersonalizado", msoBarPopup) On Error GoTo 0 With Controle.Controls.Add(msoControlButton) .FaceId = 1394 .OnAction = "CaixaMaster" End With End Sub Sub MostraPopUp(Quantidade As String) Dim Controle As CommandBar Set Controle = CommandBars("PopUpPersonalizado") Controle.Controls(1).Caption = "Quantidade = " & Quantidade Controle.ShowPopup End Sub -
Visual Basic Converter número decimal em hora - VBA
Midori respondeu ao tópico de julianasilva2603 em Programação - outros
@Gudelícia Como usou a função Format? Tentou a outra função FormatDateTime? p.ex, MsgBox FormatDateTime([A1].Value) Assim caso a célula A1 tenha um valor fracionário a função vai converter para o formato de hora. -
Você pode usar o conteiner com <vector>. Aí é só ir adicionando os elementos em um loop até entrar com zero.
-
Excel subtrair valor até abaixo de valor especifico
Midori respondeu ao tópico de Rafael nunes da silva em Microsoft Office e similares
Em A2 aplique a fórmula =MOD(A1;10) -
Excel Mesclagem não esta deixando o espelhamento funcionar corretamente
Midori respondeu ao tópico de Scarfay em Microsoft Office e similares
Isso acontece quando a fórmula tem que conter aspas simples, normalmente para nome composto, numérico, etc. Talvez tenha uma configuração para evitar isso... Mas você pode apagar o segundo range quando digitar a fórmula, ou colocar um nome genérico na aba, escrever as fórmulas e depois voltar para o anterior. -
Excel Excel - Validação de dados + função Indireto
Midori respondeu ao tópico de YSS em Microsoft Office e similares
@YSS Se for o Excel 365 ou 2021, uma forma pode ser com colunas auxiliares para buscar os dados da tabela com as fórmulas CLASSIFICAR e ÚNICO, p.ex, Célula E3 =CLASSIFICAR(ÚNICO(TABELA[SUBSETOR])) para criar uma lista dos Subsetores sem repetição da tabela azul (TABELA). Célula G3 em validação de dados fica com a fonte =$E$3#. Célula J3 =TRANSPOR(CLASSIFICAR(ÚNICO(SE(TABELA[SUBSETOR]=G3;TABELA[NOME];"")))) para criar a lista dos nomes. Aí é só arrastar. Célula H3 =$J3#. Se assim não resolver ou o seu Excel não for compatível, anexe uma planilha com dados fictícios. Assim vai facilitar para quem puder fazer outras sugestões. -
Excel Macro para copiar e colar de forma sequencial
Midori respondeu ao tópico de Matheus Orchulhak em Microsoft Office e similares
@Matheus Orchulhak Achei o Desenvolvendo Macros no Excel (Writing Excel Macros with VBA) da O'Reilly um bom livro. Por ser uma publicação mais antiga não tem alguns recursos das versões mais recentes do Excel/VBA, mas dá uma boa base do ambiente. -
Excel Validação de Datas - VBA
Midori respondeu ao tópico de f.veronesi em Microsoft Office e similares
@f.veronesi Para impedir a entrada você usar validação de dados. Selecione a célula C5 e em validação de dados: Permitir > Personalizado. Coloque ÉNÚM(C5) e na aba Alerta de Erro deixe o estilo como Parar e escreva a mensagem que deve aparecer. A da data pode ser via macro, Private Sub Worksheet_Change(ByVal Target As Range) Dim Coluna As Range Set Coluna = [Tabela1].ListObject.ListColumns("Vencimento").DataBodyRange If Not Coluna Is Nothing Then If Not Application.Intersect(Target, Coluna) Is Nothing Then If Target <> "" And Target < Date Then MsgBox "Data menor que " & Date End If End If End If End Sub -
Excel Macro para copiar e colar de forma sequencial
Midori respondeu ao tópico de Matheus Orchulhak em Microsoft Office e similares
@Matheus Orchulhak Use um loop e se quiser copiar mais colunas é só editar o range, Sub CopiaCola() Dim C As Integer For C = [B2].Column To [I2].Column Step 2 Call Cells(2, C).Copy(Cells(2, C + 1)) Next C End Sub -
Para trocar as letras deixe os loops assim, int n = strlen(frase); for (i = 0; i < n - 1; i++){ for (j = 0; j < n - i - 1 ; j++){ if (frase [j] > frase [j + 1]){ char aux = frase[j]; frase[j] = frase[j + 1]; frase[j + 1] = aux; } } }
-
@Simão. A implementação da função com base no pseudocódigo pode ser assim, char *ordena(char *frase, int n){ int trocado; do{ trocado = 0; for(int i = 0; i < n - 1; i += 1){ if(frase[i] > frase[i + 1]){ char aux = frase[i]; frase[i] = frase[i + 1]; frase[i + 1] = aux; trocado = 1; } } }while(trocado); return frase; } Se não quiser alterar a frase original crie outro parâmetro. Aí é só passar os argumentos para a função, p.ex, puts(ordena(frase, strlen(frase)));
-
Se quer apenas mostrar a frase invertida na função, você imprimir cada letra no loop da última até a primeira, p.ex, int inversao(char *frase, int i){ printf("\nA frase inversa é: "); for(int n = i - 1; n >= 0; n -= 1){ putchar(frase[n]); } return 0; }
-
Esse algoritmo é usado para ordenar vetores e a frase é um vetor de caracteres, p.ex, https://pt.wikipedia.org/wiki/Bubble_sort Modifique os tipos dos parâmetros para char da função swap e o primeiro da bubble e teste assim, int main(){ char frase[100] = "teste de ordenacao"; bubbleSort(frase, strlen(frase) - 1); puts(frase); return 0; } Obs: Nesse bubble em C foi usado recursão, então se ainda não viu esse assunto acho que devia tentar implementar de forma não recursiva como p.ex no pseudocódigo.
-
Excel Msgbox retornando um valor contido em uma célula
Midori respondeu ao tópico de marcospires1 em Microsoft Office e similares
@marcospires1 Cole no módulo da planilha Pedido e entre com o código no Range para testar, Private Sub Worksheet_Change(ByVal Target As Range) If Not Application.Intersect(Target, [A12:A40]) Is Nothing Then Dim Quantidade As String Quantidade = Busca(Target) If Quantidade <> "" Then MsgBox "Quantidade = " & Quantidade End If End If End Sub Function Busca(ByVal Codigo As String) As String Dim Celula As Range Set Celula = ThisWorkbook.Sheets("Impostos").[A:A].Find( _ What:=Codigo, LookIn:=xlValues, LookAt:=xlWhole) If Not Celula Is Nothing Then Busca = Celula.Offset(0, 4).Value End If End Function -
Procure por algoritmos de ordenação, pode ser o Bubble Sort que é bem simples e aplique na string.
-
Excel Normalizar botão de imprimir do Userform1
Midori respondeu ao tópico de LucasExcel em Microsoft Office e similares
Aqui copiou os dados do csv, veja que as colunas M, N e O foram preenchidas, Não é assim que deve ficar? Se não for mostre um exemplo de como deve ser. -
Outro Excluir linha de uma tabela dinâmica usando vba
Midori respondeu ao tópico de elicpa em Programação - outros
A tabela dinâmica permite ocultar e exibir os itens. Se quer apagar um registro da planilha, terá que ser onde a tabela dinâmica busca os dados. Depois é só atualizar a tabela. -
Excel Normalizar botão de imprimir do Userform1
Midori respondeu ao tópico de LucasExcel em Microsoft Office e similares
@LucasExcel Agora é só testar as macros, CopiaVazio e CopiaCheio. Pode rodar cada uma com F5 e depois se estiver ok coloque para executar nos botões. -
Excel Msgbox retornando um valor contido em uma célula
Midori respondeu ao tópico de marcospires1 em Microsoft Office e similares
@marcospires1 Anexe uma planilha onde seja possível testar esses resultados. -
Excel Horímetro de produção mensal
Midori respondeu ao tópico de Jeff_Sandes em Microsoft Office e similares
@Jeff_Sandes Os comandos da Sub que atualiza os valores são suficientes. Talvez você não tenha testado direito. Crie uma planilha em branco e coloque algum valor na célula Z1. Rode a macro inicia_turno e deixe ela escrever alguns valores; Salve a planilha e feche; Abra e execute novamente a macro com os dados anteriores para ver que os novos valores serão escritos na próxima coluna. -
Excel Contador automático a cada nova OS
Midori respondeu ao tópico de Revolucao em Microsoft Office e similares
@Revolucao Crie a aba Parametros, abra o editor de macros com o comando Alt+F11 e no menu escolha Inserir > Modulo. E cole o código, Sub GerarOS() Dim PlanParam As Worksheet Dim PlanOrdem As Worksheet Set PlanParam = ThisWorkbook.Sheets("Parametros") Set PlanOrdem = ThisWorkbook.Sheets("ORDEM DE PRODUCAO") PlanParam.[B2].Value = PlanParam.[B2].Value + 1 PlanOrdem.[B8].Value = Format(PlanParam.[B2].Value, "00000") End Sub Sub RedefinirNumeroOS() Dim PlanParam As Worksheet Dim Resp As String Set PlanParam = ThisWorkbook.Sheets("Parametros") Resp = InputBox("Informe um número para redefinir o contador de OS", "Redefinir contador de OS", 0) Resp = Replace(Resp, ".", ",") If IsNumeric(Resp) Then If Resp >= 0 And (Fix(Resp) - Resp = 0) Then PlanParam.Range("B2").Value = Resp End If End If End Sub Aí é só salvar o arquivo no formato xlsm. Atribua as macros aos botões clicando com o direito sobre eles e escolhendo Atribuir Macro. -
Excel Normalizar botão de imprimir do Userform1
Midori respondeu ao tópico de LucasExcel em Microsoft Office e similares
Não precisa usar API para abrir um arquivo csv, isso pode ser feito com Workbooks.Open. E esses comandos OnTime são desnecessários. Coloque os arquivos csv no mesmo diretório da planilha e faça um teste, Enum Comboio Vazio = 1 Cheio = 2 End Enum Sub CopiaCSV(Nome As String, Tipo As Comboio) Dim ArqCSV As Workbook Dim Area As Range Set ArqCSV = Workbooks.Open(Filename:=ThisWorkbook.Path & "\" & Nome & ".csv", Local:=True) If Tipo = Cheio Then Set Area = ArqCSV.ActiveSheet.[I9] ArqCSV.ActiveSheet.Range(Area, Area.End(xlDown)).Copy ThisWorkbook.ActiveSheet.[O6].PasteSpecial xlPasteValues ElseIf Tipo = Vazio Then Call ArqCSV.ActiveSheet.[D:H].Delete(Shift:=xlToLeft) Set Area = ArqCSV.ActiveSheet.[C2:D2] ArqCSV.ActiveSheet.Range(Area, Area.End(xlDown)).Copy ThisWorkbook.ActiveSheet.[M6].PasteSpecial xlPasteValues End If Application.CutCopyMode = False Call ArqCSV.Close(False) End Sub Sub CopiaVazio() Call CopiaCSV([H2], Vazio) End Sub Sub CopiaCheio() Call CopiaCSV([H3], Cheio) End Sub E no fórmulário é só chamar a sub CopiaCSV com os mesmos argumentos.
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