Notifications
Clear all

Ordenar dados de outra plan

17 Posts
4 Usuários
0 Reactions
2,490 Visualizações
 Josy
(@josy)
Posts: 0
New Member
Topic starter
 

Preciso de ajuda com essa planilha. Existe alguma forma (fórmula - rss) dos dados na Plan 'Serie', serem copiados nas colunas na ordem da Plan 'Folha'? Assim... A Plan Serie é gerada por um sistema que não coloca as disciplinas na ordem que necessito. A ordem que necessito que permaneçam é a que coloquei na Plan Folha. Preciso uma macro que copie as colunas de notas, faltas e ausências compensadas... justamente nessa ordem, de uma forma fácil e com o retorno exato, sem falhas.

Agradeço a ajuda.

P/S.: Será que uma fórmula ou função daria conta do recado? Estou postando o mesmo tópico lá tb...

Um Abraço a tds ;)

 
Postado : 06/10/2015 9:58 am
(@mprudencio)
Posts: 0
New Member
 

Não é mais facil vc ajustar a planilha Serie igual (posicionamento) a planilha Folha???

Esse ajuste é so colocar as disciplinas na mesma ordem.

Muitas vezes o planejamento da planilha facilita nosso proprio trabalho.

Eu arrumei essa copiando e colando as celulas dessa turma.

Se quiser pode fazer uma macro que faça isso usando o gravador de macros.

 
Postado : 06/10/2015 11:32 am
 Josy
(@josy)
Posts: 0
New Member
Topic starter
 

Olá, Marcelo

Agradeço a sua resposta... e seu tempo.
Seria mais simples mesmo... mas o caso é que a plan Serie é gerada desta forma pelo sistema da SESP (Secretaria da Educação do Estado de São Paulo), já a segunda é uma plan, interna das escolas... ou seja, somos nós que teremos de nos adaptar... rsss... e achei muito repetitiva as colunas de números para cada disciplinas e as ordens... Ainda assim, te agradeço.

Vou deixar aqui pra ver se alguém me dá uma ajuda...

Afinal é uma escola é muito grande... muitas turmas... rsss

 
Postado : 06/10/2015 11:39 am
(@mprudencio)
Posts: 0
New Member
 

Entao tenta esse codigo.


Sub Notas()

Application.ScreenUpdating = False


    Range("D6:AA75").Select
    Selection.ClearContents
    Range("D6").Select
    Sheets("Serie").Select
       Range("C15").Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Sheets("Folha").Select
    Range("V6").Select
    Selection.PasteSpecial _
     Paste:=xlPasteValues, _
        Operation:=xlNone, _
        SkipBlanks:=False, _
         Transpose:=False
    Sheets("Serie").Select
    Range("H15").Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Folha").Select
    Range("M6").Select
    Selection.PasteSpecial _
     Paste:=xlPasteValues, _
        Operation:=xlNone, _
        SkipBlanks:=False, _
         Transpose:=False
    Sheets("Serie").Select
    Range("M15").Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Folha").Select
    Range("S6").Select
    Selection.PasteSpecial _
     Paste:=xlPasteValues, _
        Operation:=xlNone, _
        SkipBlanks:=False, _
         Transpose:=False
    Sheets("Serie").Select
    ActiveWindow.SmallScroll ToRight:=14
    Range("R15").Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Folha").Select
    Range("J6").Select
    Selection.PasteSpecial _
     Paste:=xlPasteValues, _
        Operation:=xlNone, _
        SkipBlanks:=False, _
         Transpose:=False
    Sheets("Serie").Select
    Range("W15").Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Folha").Select
    Range("G6").Select
    Selection.PasteSpecial _
     Paste:=xlPasteValues, _
        Operation:=xlNone, _
        SkipBlanks:=False, _
         Transpose:=False
    Sheets("Serie").Select
    Range("AB15").Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Folha").Select
    Range("Y6").Select
    Selection.PasteSpecial _
     Paste:=xlPasteValues, _
        Operation:=xlNone, _
        SkipBlanks:=False, _
         Transpose:=False
    Sheets("Serie").Select
    Range("AG15").Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Folha").Select
    Range("D6").Select
    Selection.PasteSpecial _
     Paste:=xlPasteValues, _
        Operation:=xlNone, _
        SkipBlanks:=False, _
         Transpose:=False
    Sheets("Serie").Select
    Range("AL15").Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Folha").Select
    Range("P6").Select
    Selection.PasteSpecial _
     Paste:=xlPasteValues, _
        Operation:=xlNone, _
        SkipBlanks:=False, _
         Transpose:=False
    Application.CutCopyMode = False
    Range("C3:C5").Select
    Sheets("Serie").Select
    Range("B15").Select
    Sheets("Folha").Select
    
    
    Application.ScreenUpdating = True
    
End Sub



 
Postado : 06/10/2015 12:35 pm
 Josy
(@josy)
Posts: 0
New Member
Topic starter
 

Olá, Marcelo!!

Agradeço sua ajuda, e pelo seu tempo!
Tem como incluir nessa rotina condições para copiar? Por exemplo: Copiar se "LINGUA PORTUGUESA"... se "MATEMATICA"...
Por que o que acontece é o seguinte. As ordens geradas pelo sistema da SESP, não ficam na mesma ordem, de turma para turma... Como disse, aí está a dificuldade. Tenho 48 turmas, e tenho que fazer esse procedimento 5 vezes ao ano... e Ctrl+C e Ctrl+V, não está ajudando :oops: kkk

Um abraço! ;)

 
Postado : 07/10/2015 5:14 am
 Josy
(@josy)
Posts: 0
New Member
Topic starter
 

Será que teria uma forma de utilizar um array bi-dimensional pra isso?

 
Postado : 07/10/2015 5:39 am
(@mprudencio)
Posts: 0
New Member
 

Vc diz que tem 48 turmas mas qtas series de 5 a 8 ensino fundamental e 1 a 3 do ensino medio?

Se a minha conta estiver correta vc tem 7 planilhas diferentes

O que eu fiz foi ctrl+c e colei valores com o gravador de macros ligado e depois editei o codigo final, eliminando os erros cometidos durante a gravação.

Se nao conseguir fazer o mesmo poste um modelo de cada serie que faço aqui.

 
Postado : 07/10/2015 6:55 am
 Josy
(@josy)
Posts: 0
New Member
Topic starter
 

Oi, Marcelo...
É assim... Temos planilhas de 5ª a 8ª com 8 disciplinas...sendo um total de 17 turmas...
As planilhas são geradas fora de ordem... Algumas vem com ARTE na primeira coluna... outras GEOGRAFIA... INGLÊS...
Mas é necessário que fiquem nessa ordem que coloquei... PORT, HIST, GEOG, CIEN, MATE, ED. FÍS, ARTE, ING

Já no caso do ensino médio são 1º a 3º com 12 disciplinas... sendo um total de 31 turmas...
Essas também são geradas fora de ordem... Mas não coloquei o modelo, pq não sei se será possível realizar isso...
A plan é semelhante... com o acréscimo das colunas... nesta ordem: PORT, HIST, GEO, FIS, QUI, BIO, MAT, ED. FÍS, ARTE, ING, FILOS, SOCIOL...

 
Postado : 07/10/2015 7:10 am
(@mprudencio)
Posts: 0
New Member
 

Como eu disse monte a estrutura e poste aqui.

 
Postado : 07/10/2015 9:38 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Josy, baseando e adaptando uma outra rotina que te passei em um outro tópico e pelo que entendi neste, ficaria da seguinte forma :

Option Explicit

Dim sDisciplina

Sub CopiaColaColunas()
    Dim sEnd As String
    Dim sEnd2 As String
    Dim nRow As Integer
    Dim iNiRow As Long
    Dim vArr
    Dim ColunasSolicitadas As Variant
    Dim Col
    Dim GetColumnLt As String

    Application.ScreenUpdating = False

    Sheets("Serie").Activate
    
    iNiRow = 15 'Linha inicial para copiar
    nRow = 11 'linha de titulos

    'Carregando Array das colunas B, G, L,  Q,  V,  AA, AF, AK
    ColunasSolicitadas = Array(2, 7, 12, 17, 22, 27, 32, 37)
    
    For Each Col In ColunasSolicitadas 'Para cada coluna
        sDisciplina = Cells(nRow, Col).Value
                
        sEnd = Cells(iNiRow, Col + 1).Address(0, 0)
        sEnd2 = Cells(iNiRow, Col + 3).Address(0, 0)
        
        'Decompõe o endereço para a letra da Coluna
        vArr = Split(Cells(iNiRow, Col + 3).Address(True, False), "$")
        GetColumnLt = vArr(0)
        
        'Copia
        Sheets("Serie").Range(sEnd, Range(GetColumnLt & Rows.Count).End(xlUp)).Copy
        
        Call ColaFolhaCriterio
        
        Application.CutCopyMode = False
            
    Next Col
    
       Sheets("Folha").Activate
       Range("B1").Activate
       
       Application.ScreenUpdating = True
       
    End Sub
    
Sub ColaFolhaCriterio()
    Dim lgTtColunas As Long
    Dim iCol As Long
    Dim myCol As String
    Dim linPaste As Long
    
    Dim GetColumnCola As String
    Dim vArr
    
    Sheets("Folha").Activate
        
    'Conta as colunas preenchidas
    lgTtColunas = Cells(3, Columns.Count).End(xlToLeft).Column
    linPaste = 6 'Linha inicial para colar
       
    For iCol = 4 To lgTtColunas
           
        'Verifica os titulos das colunas
        If Cells(3, iCol).Value = sDisciplina Then 'Se coincidir
             
            'Decompõe o endereço para a letra da Coluna
            vArr = Split(Cells(3, iCol).Address(True, False), "$")
            GetColumnCola = vArr(0)
            
            'Cola
            Range(GetColumnCola & linPaste).PasteSpecial _
                    Paste:=xlPasteValues, _
                    Operation:=xlNone, _
                    SkipBlanks:=False, _
                    Transpose:=False

           Sheets("Serie").Activate
           Exit Sub
           
        End If
           
    Next iCol

End Sub

Sub LimpaFolha()
    Sheets("Folha").Range("D6:AA75").ClearContents
End Sub

Veja a aplicação no modelo que enviou, e se analisar as rotinas verá que da para ajustar para mais colunas tambem.
Copiar e Colar Colunas de acordo com um determinada ordem

Se não for isto, favor avisar.

[]s

 
Postado : 07/10/2015 11:05 am
 Josy
(@josy)
Posts: 0
New Member
Topic starter
 

Desculpe, o mal jeito de não ter reparado nisso...

Perfeito, Mauro! :oops: ;)

Muito obrigada!!! Vc é o máximo!!!

Um abraço!!

 
Postado : 07/10/2015 11:16 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Josy, uma obs na rotina, quando estava adaptando ia seguir uma outra linha e acabei criando a Variável :

Dim sEnd2 As String
sEnd2= Cells(iNiRow, Col + 3).Address(0, 0)

Só que acabei mudando o foco e não utilizei a mesma, então só para não haver confusão você pode retira-la da rotina que não afetara em nada.

[]s

 
Postado : 07/10/2015 12:18 pm
(@tarcelles)
Posts: 0
New Member
 

Ficou muio bacana essa adaptação Mauro parabéns, mais um bom e velho Procv junto com o SeÉerros resolveria isto.

 
Postado : 07/10/2015 1:02 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Ficou muio bacana essa adaptação Mauro parabéns, mais um bom e velho Procv junto com o SeÉerros resolveria isto.

Tarcelles, com certeza daria para utilizar não somente as funções que citou como tambem as que estão no modelo Indice, correspondente entre outras, eu desenvolvi em VBA pelo fato de ela ter postado neste forum, mas ela deixou em aberto se daria parta utilizar funções, então você pode até montar um modelo com as funções e anexar no forum.
Como este tópico já esta trancado, quando você tiver o modelo, me envia mensagem em Private que destranco para anexar.

[]s

 
Postado : 07/10/2015 1:56 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Mauro

Ela abriu 2 tópicos, um no Fórmulas & Funções, que ela já marcou como Resolvido, e outra aqui em VBA.

Link para o outro tópico:

viewtopic.php?f=20&t=17627&p=89228#p89228

Um abraço.

 
Postado : 07/10/2015 3:30 pm
Página 1 / 2