
Eu transfiro muitos dados no Excel. Quero poder copiar muitas células aleatórias para outro local, para que fiquem lado a lado.
Por exemplo, quero copiar a3, d21, aa32, cd121, etc. de modo que a3->a1000,d21->b1000,aa32->c1000,etc.
Existe uma maneira fácil de fazer isso além de copiá-los um por um e ir e voltar demorando muito para procurar cada uma dessas células aleatórias?
O tipo de resposta que espero: procuro essas células (a3, d21, etc.) e as seleciono uma de cada vez para que todas sejam selecionadas em uma ordem. Então eu faço "algum comando" e clico em a1000 e todos eles são copiados lado a lado.
Se o Excel não for capaz de fazer esse tipo de operação, e se essas células "aleatórias" que estou copiando estiverem na mesma linha e separadas por uma distância fixa? Por exemplo (3 separados) a6, d6, g6, j6, m6, etc. -> a10,b10,c10,etc.
Parte 2.)
E se, em vez de copiá-los lado a lado, eu quiser copiá-los de modo que fiquem, digamos, separados por k colunas para algum número inteiro positivo k.
Por exemplo, (k = 4) a3, d21, aa32, cd121, etc. -> a1000,e1000,i1000,m1000,q1000, etc.
ou se isso não for possível, que tal as células na mesma linha separadas por j e separadas por k?
Por exemplo, (j=3,k=4) a6,d6,g6,j6,m6,etc. -> a10,e10,i10,m10,q10, etc.
Responder1
VBA é seu amigo. Se, por algum motivo, o VBA não for uma opção, você pode dividir a tela e observar as células de origem na parte superior e o destino na parte inferior (ou vice-versa).
Dividir verticalmente (por uma linha horizontal):
O oposto:
O resultado final com 4 telas separadas:
Responder2
Se você nunca experimentou o VBA, fornecerei meu código de exemplo. Como você tinha muitas opções na sua pergunta, tenho certeza que após analisar o código você conseguirá adaptá-lo às suas necessidades. Comentei isso também para ajudá-lo a aprender.
Primeiro, crie um novo módulo (Inserir>Módulo)
E então coloque o código dentro:
Option Explicit ' no matter what, this is a must have line in every case
Sub test()
' declaring variables
Dim rngSource As Range
Dim rngTarget As Range
Dim i As Long
Const k As Long = 4 ' this is the k from your example
Dim cell As Range
' choosing source cells
Set rngSource = Application.InputBox(prompt:="Choose cells, use Ctrl", Type:=8)
' choosing destination cell
Set rngTarget = Application.InputBox(prompt:="Select the 1st target cell", Type:=8)
' iterating through every cell in Source selection
i = 0
For Each cell In rngSource
' writing value
rngTarget.Offset(0, i).Value = cell.Value
i = i + k
Next
End Sub
Por alguma razão você não consegue ver as cores aqui. Mas no VBE você os verá.
Boa sorte!