Numeração automática no CALC

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.

1 Like

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

1 Like

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?

1 Like

Ola @ls.paulo, para quem é a solicitação ?

Seria para mim, tenho que solicitar em outro local?

@ls.paulo, segue um exemplo:

ls.paulo.ods (15.3 KB)

@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çamento

oServ = 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ódigo

oDestino.getCellRangeByName ( “M1” ).Value = oCodigo 'Escreve o novo código de lançamento na célula “M1” da planilha “Destino”
End Sub

1 Like