Copiando muitas células para um local

Copiando muitas células para um local

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):
Dividir verticalmente (por uma linha horizontal)

O oposto:
O oposto

O resultado final com 4 telas separadas:
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!

informação relacionada