Ir para conteúdo
Fórum Script Brasil
  • 0

Criar Função No Excel


Fred Flintstones

Pergunta

Olá Pessoal,

Sou novo no Fórum e estou começando no VBA.

Já muitos tutoriais, apostilas e cursos na net sobre VBA. Algumas coisas eu já sabia, mas aprendi muitas também.

Agora quero colocar em prático o que tenho lido, mas ainda estou com um pouco de dificuldade.

Estou fazendo uma planilha para controle de faltas.

A planilha é simples, tem um dia em cada coluna, sendo na primeira coluna o nome do funcionário.

Então fica +- assim:

Nome | 01 | 02 | 03 | 04 | 05| ...

Ai abaixo do dia coloco um "X" se ele trabalhou e um "F" se ele faltou.

Numa planilha ao lado (plan2) quero constar os dias em que o funcionário faltou, até ai moleza, mas gostaria de colocar em uma célula os dias em que ele faltou, como por exemplo:

02, 03, 08

Caso ele tenha faltado os dias 02, 03, 08

Já consegui fazer via Fórmula, mas tive que utilizar uma grande parte no fim da planilha para criar uma outra matriz para concatenar tudo, o que toma um espaço desnecessário.

Gostaria de fazer uma função, de modo que eu possa selecionar a tabela onde estão os dados, escolha a condição (F) e escolha a linha equivalente.

O que não entendi em tudo o que li é como vau fazer o VBA buscar a range A1:F10 e ir iterando de 1 em 1, pois teria que testar mais ou menos assim:

SE B2 igual a "F" então G11 recebe o valor de B2
Ai é que preciso ir iterando +1 na coluna, para que
SE C2 igual a "F" então G11 recebe o valor anterior + o valor de C2

E assim por diante, e sempre colocando uma "," (Vírgula) entre os valores.

Espero que tenha me feito entender. Caso tenha ficado meio complicado de entender tento explicar melhor.

Conto com a ajuda do pessoal do Förum.

Grato,

Fred

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Você pode fazer isso através de um laço for, vou mostrar um código com a idéia primária, ai você adapta no seu código:

For i = 1 To 10
        Cells(1, i).Value = "Teste"
    Next

Note que usei o campo da coluna na variável "i", agora é só fazer a condição desejada para cada caso, e o laço for fará automaticamente.

Link para o comentário
Compartilhar em outros sites

  • 0

Olá Renato,

Muito obrigado pela sua atenção.

O laço eu entendi bem, porém não entendi o seguinte.

Terei que entrar com o intervalo onde quero procurar o "F", por exemplo (D8:Z8).

O laço terá que ir da coluna D até a colna Z, sendo que esse intervalo pode variar, dai não sei como colocar esse tamanho de intervalo no "i". Por exemplo, no seu exemplo o "i" vai de 1 até 10. Tem como esse 10 ser o número de colunas do intervalo previamente selecionado?

Desde já agradeço sua atenção.

[]'s

Fred

Link para o comentário
Compartilhar em outros sites

  • 0

Faz diferença?

Por exemplo, se o objetivo é saber o que está com "F" ou não, não faz diferença até onde o laço vai, o que for célula em branco nem será considerado, portanto você poderia fazer o laço até a coluna IV (256) sem problema nenhum.

Link para o comentário
Compartilhar em outros sites

  • 0

Presumindo que os dados estão assim

b1 até af = 1 até 31 representa dias do mes

a2 até axx.. = Nomes

colunas b até af letras F ou X para cada nome

01 02 03 .... 31

João x f x ......

jose f x x ....

Sub anotadiasfaltados()

'macro by Sir

For n = 2 To ActiveSheet.UsedRange.Rows.Count

fal = ""

For d = 1 To 31

If Cells(n, d) = "F" Then

fal = fal & " , " & Cells(1, d).Value

End If

If d = 31 Then

If Left(fal, 3) = " , " Then fal = Right(fal, Len(fal) - 3)

Cells(n, 33).Value = fal 'linha n e coluna AJ - anota dias na coluna

End If

Next

Next

End Sub

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...