Fiz em planilha, um formulário de saída de material. É possível fazer nesse formulário uma numeração automática?..por exemplo, hoje abri esse arquivo e preenchi uma saída de material e coloquei manualmente em um campo específico o número “10” (que é meu controle de emissão desse formulário). Eu gostaria que na próxima vez que fosse usar esse arquivo para fazer uma nova saída de material o número subsequente que deverá ser o nº"11" entrasse automaticamente.
Grato.
Na célula que vc reservou para essa informação no seu formulário, coloque a fórmula:
=CÉL(“ROW”)
Isso vai retornar o número da linha da planilha onde o registro foi feito. Caso a primeira linha efetivamente com dados não seja a “1”, vc pode subtrair a diferença na função.
Por exemplo, se a primeira linha de dados é efetivamente a linha 10, vc usa a fórmula:
=CÉL(“ROW”) - 9
se for a 23, vc usa…
=CÉL(“ROW”) - 22
e assim por diante.
Abs
Interessante seu método. Aqui eu sempre uso " = linha() ", para retornar a linha onde a fórmula está inserida. basicamente algo como " = linha()-9 ", se os dados estão a partir da linha 10.
@Grafeno É verdade, linha() funciona muito bem. o lance é que a função cél() é tão cheia de opções interessantes que eu me acostumei com ela e, por isso mesmo, acho que vale a pena divulgar. Qdo puder, dê uma olhada: Funções de informação - LibreOffice Help
Até cheguei a conhecer a função, mas não tinha atinado para o poder da mesma. Muito obrigado!
Em uma célula auxiliar, coloque a fórmula
=MAIOR($A$1:$A$1048576;1)+1
Programe uma macro para copiar este valor para a primeira linha da coluna A não vazia (cujo número é dado pela fórmula acima), e associe ao evento “Abrir documento”.
Oi DCM. Dei uma boa olhada no Google e parece que esta dúvida é recorrente entre usuários de MS Excel e OpenOffice também.
Aparentemente não tem como fazer o que você quer da forma que você quer (ao usar uma nova linha para controlar o seu estoque ele soma +1 em determinada célula) mas tem formas alternativas satisfatórias (acho) de fazer isso.
O que parece chegar mais perto da resposta que você quer é o “Cálculo Automático de séries” que está descrito em portuguÊs do Brasil, em detalhes, neste link aqui: Cálculo automático de séries - LibreOffice Help.
Espero que te ajude. Abraço.
Vendo as respostas e comentários, sugiro publicar estas dicas na revista LibreOffice.
O que você pede não é tão difícil, dá para fazer apenas utilizando formulas e validação.
1 passo:
Na coluna A colocaremos o tipo de operação (Entrada ou Saída), para isso usaremos validação.
_Coloque as opções (Entrada) e (Saída) nas células AA1 e AA2 respectivamente.
_Selecione as células que deseja validar , para isso digite no campo de endereço/nomes o intervalo (ex: A3:A10000)
_ Menu DADOS > VALIDAÇÃO… depois use a opção INTERVALO DE CÉLULAS selecione as células com os nomes (Entrada e Saída) que colocamos em AA1:AA2. Dê OK
Está pronta a validação
Agora colocaremos uma fórmula para contagem na coluna B (Nº controle). Detalhe não esqueça que ela deve começar na mesma linha que o primeiro item da validação ( no nosso caso a linha 3. Em B3 digite :
=SE($A3="";"";SE($A3=$AA$1;CONT.SE($A$3:A3;$AA$1);SE($A3=$AA$2;CONT.SE($A$3:A3;$AA$2;"")))
Agora é só usar a alça de preenchimento para atribuir a fórmula às demais células da coluna B.
Dica: certa vez precisei criar mais de uma lista na mesma planilha. E precisava que a contagem recomeçasse, então substitui o $AA$3 pela célula que eu queria $AA$40 e ficou assim:
=SE($A40="";"";SE($A40=$AA$1;CONT.SE($A$40:$A40;$AA$1);SE($A40=$AA$2;CONT.SE($A$40:$A40;$AA$2;"")))
Novamente usei a alça de preenchimento nas linhas que precisava.
RESULTADO:
Você terá o nº de controle automático tanto para ENTRADAS quanto para SAÍDAS.
Fica a dica.
Ola, hoje eu estava com a mesma duvida, mas consegui resolver, segue abaixo uma maneira bem simples que funciona certinho:
Parece ser difícil porque escrevi muito detalhado, mas é super simples se você tiber o básico do básico no Excel ou Calc.
1. Em uma célula qualquer (Ex. A1) do LibreOffice Calc, você escreve esta formula: =AGORA()
A formula “=AGORA()” mostrara a data atual do sistema
2. Na célula A2, você escreve esta formula: =HORA(AGORA())
A formula “=HORA(AGORA())” mostrara somente o número correspondente a hora. Ex. se a hora atual for 18:30:20, só aparecera 18.
3. Na célula A3 você deve escrever a seguinte formula: =MINUTO(AGORA())
A formula “=MINUTO(AGORA())” mostrara somente o número correspondente aos minutos. Ex. se a hora atual for 18:30:20, só aparecera 30.
4. Na célula A4 você deve escrever a seguinte formula: =SEGUNDO(AGORA())
A formula “=SEGUNDO(AGORA())” mostrara somente o número correspondente aos segundos. Ex. se a hora atual for 18:30:20, só aparecera 20.
**5. Bom agora, você deve clicar com o botão direito do mouse na célula onde você colocou a formula =AGORA(), escolher a opção “Formatar Células…”. Clique na guia “Número”, na “Categoria” escolhe Número e no “Formato” escolhe -1234 por fim clique em OK. Agora não mostrara mais o formato de data Ex. 26/04/2017 , ficara algo parecido com: 42852 **
Por ultimo na célula A5 você deve usar a seguinte formula: =SOMA(A1:A4)
A formula “=SOMA(A1:A4)” somara os valores das células A1 ate a A4 e mostrara um valor que nunca se repetira, e este valor você usa para ser o número do recibo.
Você pode criar uma planilha para esta formula e outra no mesmo documento com uma formula que copie os valores da célula A5 para você usar onde quiser no arquivo.
***Importantíssimo se você não formatar a célula A1 não vai dar certo, o sistema mostrara um erro poque ele não conseguira somar datas. ***
Uma outra saída, quando for emitido o recibo, gravasse, por exemplo o numero e data em um local da planilha. (uma macro que comande a impressão e salvamento dos dados), sendo que o campo do formulário de numeração será o MAIOR NUMERO REGISTRADO + 1.
Boa tarde, você pode disponibilizar uma planilha de exemplo para adaptar ao meu contexto?
Seria para mim, tenho que solicitar em outro local?
@DCM1 , segue código para encontrar o último lançamento e definição do novo código:
Sub GerarCodigo
Set oDoc = ThisComponent
Set oBase = oDoc.Sheets.getByName ( “BaseDados” ) 'Planilha onde está sua base de dados
Set oDestino = oDoc.Sheets.getByName ( “Destino” ) 'Planilha onde será armazenado o código do último lançamentooServ = CreateUnoService( “com.sun.star.sheet.FunctionAccess” )
oCodigo = oServ.CallFunction( “LARGE”, Array(oBase.getCellRangeByName(“B2:B1048576”) , 1 )) 'Encontra o maior valor na coluna de código
oCodigo =oCodigo + 1 'Acrescenta + 1 ao maior códigooDestino.getCellRangeByName ( “M1” ).Value = oCodigo 'Escreve o novo código de lançamento na célula “M1” da planilha “Destino”
End Sub