Classificação automática do Excel

0

OK, então digamos que eu tenha uma lista de títulos de filmes. Diga, por simplicidade, que existem 5 títulos de filmes. Na coluna seguinte, tenho classificações baseadas na minha opinião para o cinema, de 1 a 5, porque existem 5 títulos. Aqui está um exemplo:

Filme A - > 2
Filme B - > 1
Filme C - > 3
Filme D - > 5
Filme E - > 4

Agora, digamos que quero adicionar um novo filme com uma classificação de 3, já que gostei mais do que do filme C, D e E.

Filme F - > 3

Desde agora eu vou ter
Filme C - > 3 e filme F - > 3
as classificações vão ter que mudar, certo? Então, o que eu estou procurando é um comando ou fórmula que eu possa usar para fazer automaticamente:

  • O filme C recebe uma classificação de 4 (3 + 1)
  • O filme D recebe uma classificação de 6 (5 + 1)
  • Filme E obter uma classificação de 5 (4 + 1)

Assim, a lista logo após adicionar "Filme F - > 3" será atualizada para

Filme A - > 2
Filme B - > 1
Filme C - > 4
Filme D - > 6
Filme E - > 5
Filme F - > 3

Alguma idéia?

    
por Panos Gr 19.09.2015 / 14:01

2 respostas

0

Aqui está uma implementação do código u1016274 :

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Range("B:B"), Target) Is Nothing Then Exit Sub
   v = Target.Value
   addy = Target.Address(0, 0)
   Application.EnableEvents = False
      For Each r In Intersect(Range("B:B"), ActiveSheet.UsedRange)
         If r.Address(0, 0) <> addy And r.Value >= v Then
            r.Value = r.Value + 1
         End If
      Next r
   Application.EnableEvents = True
End Sub

Então, se começarmos com:

eadicionadoRagingBullcomonúmero3,teríamos:

Porserumcódigodeplanilha,émuitofácildeinstalareusarautomaticamente:

  1. cliquecomobotãodireitodomousenonomedaguiapróximoàparteinferiordajaneladoExcel
  2. selecioneExibircódigo-issoabreumajaneladoVBE
  3. coleomaterialefecheajaneladoVBE

Sevocêtiveralgumadúvida,tenteprimeiroemumaplanilhadeteste.

Sevocêsalvarapastadetrabalho,amacroserásalvacomela.SevocêestiverusandoumaversãodoExcelposteriora2003,deverásalvaroarquivocomo.xlsmemvezde.xlsx

Pararemoveramacro:

  1. abrirasjanelasdoVBEcomoacima
  2. limpeocódigo
  3. fecheajaneladoVBE

Parasabermaissobremacrosemgeral,consulte:

link

e

link

Para saber mais sobre macros de eventos (código da planilha), consulte:

link

As macros devem estar ativadas para que isso funcione!

    
por 19.09.2015 / 14:54
1

Aqui está a minha ideia (sem código).
Escreva uma rotina VBA que é executada quando um valor na coluna B é alterado ("Private Sub Worksheet_Change (ByVal destino como intervalo)"). 2. Marque Alvo para ser uma célula na coluna B.
3. salve o valor da seleção atual em uma variável

new = Selection.value

4. compare todos os valores de célula na coluna B da linha 1 até a última linha não vazia se ela for maior ou igual ao novo valor. Se igual, se estiver na mesma linha da seleção, pule-a. Para todos os outros casos, incremente o valor em 1.

    
por 19.09.2015 / 14:27