Boa noite Pessoal,
Tô meio perdido quanto a uma rotina, até mesmo para explicar... espero que consiga ser claro.
Estou tentando desenvolver uma rotina que busque valores nas colunas F, G, H, I, J, L, M, N, O, P, Q, R, S na planilha "01"
Em seguida preciso transferir esses valores para a planilha "RELFOL", mas numa ordem diferente.
Os valores da coluna F irão para B10 na RELFOL.
Os valores da G para C10,
H em D10
e em seguida I para E10
e por último J em F10
Assim, seguindo essa ordem os próximos valores teriam que ir para a linha de baixo.
Terminada a varredura na linha 2 da planilha "01" começaria o mesmo na linha 3 e assim por diante, e saltando uma linha para seja separado cada indivíduo. Sempre seguindo a mesma ordem descrita anteriormente.
Tentar eu tentei fazer isso.. e muito. Afinal, tenho procurado me esforçar ao máximo antes de pedir ajuda...mas não tive muito êxito. Acredito que a rotina que cheguei mais perto daquilo que busco é a que segue abaixo, talvez sirva como ínicio...
Sub PROVE() Dim c As Long Dim wsThis As Worksheet Dim ws As Worksheet Set wsThis = ThisWorkbook.Sheets("01") With wsThis Dim i As Variant Dim Plan As Worksheet Dim lastCOL As Variant Dim j As Variant Dim Soma As Double Dim DESC As Double Set Plan = Sheets("01") i = 2 j = 6 With Plan lastCOL = .Cells(i, Columns.Count).End(xlToLeft).Column End With While Plan.Cells(i, 2).Value <> vbNullString If Plan.Range("D" & i).Value = textbox1 Then For j = 6 To lastCOL Step 5 If Plan.Cells(i, j) <> vbNullString Then For c = 2 To .Cells(Rows.Count, 2).End(xlUp).Row Sheets("RELFOL").Cells(2, x) = (Plan.Cells(i, j)) Next c End If Next j End If i = i + 1 j = 6 Wend End With End Sub
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Guima... não parece ser tão complicado, a não ser pela lógica, mas explica um pouco melhor, com referências de fato.
Por exemplo, o que quer dizer com "Os valores da coluna F irão para B10..."?
F1 vai para B10?
E F2?
G1 vai para C10?
E G2?
Com isso, acho que consegue uma solução rápida...
Abraço.
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Bom dia Edson,
Primeiramente obrigado. Com relação a sua pergunta é que os valores irão para uma célula pre-determinada em outra Planilha. Usando o exemplo:
Os valores da coluna F na planilha "01" devem ir para a planilha "RELFOL" começando pela célula B10. Por exemplo F2 vai para B10, L2 para B11 e assim por diante.
F1 vai para B10?
E F2?
G1 vai para C10?
E G2?
Iniciaremos na linha 2. Assim F2 vai para B10.
G2 PARA C10,
A LINHA 3 só iria ser varrida após terminar toda a varredura na linha 2. Assim saltaríamos uma linha e reiniciaríamos todo o processo da linha 2, na linha 3 e assim por diante.
Para facilitar o entendimento coloquei um anexo. Inclusive preenchi alguns dados na planilha RELFOL para identificar como ficará a disposição dos dados.
Abraço
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Guima,
não existe redação que possa explicar o que você pretendia.
Ainda bem que postou um arquivo de exemplo.
Segue minha versão, na guia RELFOL2.
Faça muitos testes e, caso ocorra erro ou o resultado não seja o esperado, indique o erro ou um exemplo.
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Poxa Edson, SENSACIONAL !!!!
O problema tava difícil de explicar, imaginei como seria difícil entender...rs. Ai achei melhor postar o exemplo.
Embora tenha estudado um pouco seu código fiquei com uma dúvida de algo que acho que vou acabar precisando. Caso queira criar uma condição, para que seja filtrado apenas quem tiver o mesmo cargo, onde devo acrescer essa condição ? Algo como:
If ws.Cells(v, 3).Value = Combobox1 then
Ai sim copia os dados para a planilha RELFOL
Brigadão mesmo. Abraço
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Edson, esta rotina merece menção, parabens.
Guima, se entendi, você quer preencher a aba RELFOL2 obedecendo uma CONDIÇÃO, ou seja, escolhemos um CARGO e lançamos somente os dados referentes aos Nomes cujos os cargos coincidam com o escolhido em um combobox.
Pois bem, como neste modelo não temos um combo e tambem não vi relação com o que citou "ws.Cells(v, 3).Value", aproveito o modelo que o Edson postou e montei a Condição utilizando :
Do While ws.Cells(i, colCargo).Value <> ""
If ws.Cells(i, colCargo) = xCargo Then
Onde enquanto na Coluna "D" a partir da Linha "2" o valor for diferente de Vazio e se coincidir com a variavel xCargo, definido no inicio da rotina, irá preencher somente com os dados que coincidirem, sendo assim faça os testes com a rotina abaixo feita pelo Edson, a qual somente addaptei para atender as condiçõoes.
veja se seria isto :
Sub RELFOL_Mauro() Dim i, j, entlin, icol, ecol As Long Dim ws As Worksheet Set ws = Sheets("01") xCargo = "COMPRADOR" 'xCargo = Combobox1.Value i = 2 iLinCargo = 2 colCargo = 4 entlin = 9 Do While ws.Cells(i, colCargo).Value <> "" If ws.Cells(i, colCargo) = xCargo Then j = ws.Range("A1048576").End(xlUp).Row Cells(entlin, 2) = ws.Cells(i, 2) Cells(entlin, 5) = "CARGO" Cells(entlin, 6) = ws.Cells(i, 4) icol = 6 ecol = ws.Range("XFD" & i).End(xlToLeft).Column - 3 Do While icol <= ecol If ws.Cells(i, icol) = "" Then icol = icol + 4 Else If Mid(ws.Cells(1, icol), 4, 3) = "ENT" Then entcol = 2 entlin = Range("B1048576").End(xlUp).Row + 1 Else entcol = 6 entlin = Range("F1048576").End(xlUp).Row + 1 End If Cells(entlin, entcol) = ws.Cells(i, icol) Cells(entlin, entcol + 1) = ws.Cells(i, icol + 1) Cells(entlin, entcol + 2) = ws.Cells(i, icol + 2) Cells(entlin, entcol + 3) = ws.Cells(i, icol + 3) icol = icol + 4 End If Loop entlin = entlin + 2 i = i + 1 End If i = i + 1 Loop End Sub
[]s
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Boa noite Mauro !!!
Prazer revê-lo. Sua rotina funcionou sim, mas percebi um problema, utilizando o próprio exemplo exposto.
Vamos supor que os funcionários das linhas 2 e 4 tenham o mesmo cargo. Saltaria a funcionário da linha 3. Ótimo, até ai correto.
Mas se o da linha 5 for do mesmo cargo, a rotina vai saltar ele também, e assim sucessivamente, está saltando o 7, o 9, etc.
Muito obrigado desde já. Abraço
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Desculpe o double post, mas não consegui editar o post anterior
Seria apenas alterar o " i = i + 1" de dentro do IF?
Abraço
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Guima, desculpe a demora, mas apague a primeira instrução " i = i + 1 " :
.............................
..................Loop
...............entlin = entlin + 2
............' i = i + 1
........End If
........ i = i + 1
.........iLinCargo = iLinCargo + 1
......Loop
Faça os testes e qq duvida retorne.
[]s
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Olá Mauro,
Desculpe pela demora, mas quis fazer todos os teste antes de postar. E durante a semana fica difícil testar tudo que era necessário. Mas fucionou 100%. Valeu demais por mais essa.
Abraço
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel