コピーした範囲を貼り付ける際に、持っているデータの一番最後から貼り付けていく方法を探しています。
VBAの領域でしょうか。。。
例えばセル番地A1からA3には数値の1,2,3がそれぞれ入っている。それをコピーします。そのやりたい方法でA4番地のセルで”貼り付け”をすると3が、A5番地には2が、A6番地には1が貼付られるようにしたいのです。
形式を選択して貼り付け、というメニューの中にもそのような選択肢はありませんでした。
当ジャンル内で"貼付 逆から EXCEL エクセル 逆さま さかさま あべこべ”といったキーワードで検索してもなかったです。
また念のため、”コンピューター [技術者向け] > プログラミング > Visual Basic ”カテゴリもちょっと調べたのですが、なかったので質問させてください。
宜しくお願いします
No.6ベストアンサー
- 回答日時:
こんにちは。
マクロでの解決のようですから、以下のような方法で出来ます。最初にマウスで、コピーする範囲を選択してから、マクロを実行します。ショートカットに取り付けると良いかと思います。
'標準モジュール
Sub ReverseCopy()
'逆さにコピーする
Dim myRng As Range
Dim Dest As Range
Dim i As Long
Dim j As Integer
Dim k As Long
If TypeName(Selection) <> "Range" Then Exit Sub
Set myRng = Selection
Application.DisplayAlerts = False
On Error Resume Next
Set Dest = Application.InputBox("貼り付け先を指定してください", Type:=8)
If Dest Is Nothing Then Exit Sub
On Error GoTo 0
Application.DisplayAlerts = True
Set Dest = Dest.Cells(1)
With myRng
For j = 1 To .Columns.Count
For i = .Rows.Count To 1 Step -1
k = k + 1
Dest(k, j).Value = .Cells(i, j).Value
Next i
k = 0
Next j
End With
End Sub
お礼が遅くなり、誠に申し訳ありません。
コードまでお書き頂き、ありがとうございます。
しかもDialog形式で、任意の所に貼り付けられるだなんて。。。
コメントを書き、自分のものにしてみようと思います。
ありがとうございました。
No.5
- 回答日時:
簡単な方法をひとつ
A B C D E F
1 2 3 4 5(1)
2 3 4 5 6(2)
3 4 5 6 7(3)
4 5 6 7 8(4)
例えば、この様なデータが有ったとしてこれをA列が4→1の順にコピー
できれば良いのですね
F列の最初に1を入力してオートフィルで1づつ加算しますと()内の値になります
そしてコピーしたい所を選択してコピー先にコピーします(A1からF4までを選択)
コピーされたデータを並べ替えしますが、第一キーをF列にすれば出来ませんか?
(F列で降順、範囲の先頭行をデータで並べ替えして下さいね)
何でも関数、マクロ、VBAではなくてこんな方法も有る事を覚えて下さいね
お礼が遅くなり、誠に申し訳ありません。
>何でも関数、マクロ、VBAではなくてこんな方法も有る事
言われる点、よく分かります。
VBAとかでなくても、意外と解決経路ってあるものですよね。
ただ今回は、連番でない場合の逆貼付もありえるので。。。
どちらにせよ、ありがとうございました!
No.4
- 回答日時:
あぅ(^^; 間違えました m(__)m
上記MMULT()の中身が逆でした
誤 =MMULT(A1:A3,C1:F3)
正 =MMULT(C1:F3,A1:A3)です
失礼しました。
shft+ctrl+ENTERすると入力されたセルの中の式は
{=MMULT(C1:F3,A1:A3)} と{}で囲まれたものになります。
必要な数のセルを選択した状態でその中の一番上にだけ入力すれば選択範囲全部におなじ式が入ります。
No.3
- 回答日時:
行列計算で入れ替えるのはいかがでしょうか?
でかくなると面倒なので3つだけで書きます
ずれると見難いかもなので便宜上全角で表記します
A B C D F
----------------
1| 3 0 0 1
2| 8 0 1 0
3| 2 1 0 0
A列の 3、8、2 が逆に並べたいデータだとします
(見やすくするためにB列は空欄にしています)
並べ替えたデータを置く場所を(たとえばH1:H3)選択して
=MMULT(A1:A3,C1:F3)と打ち込み、
shft+ctrl+ENTERで入力します(普通にENTERだけではありません)
並べ替えるデータが4つのときは4×4の、10個ののときは10×10の「単位行列」(の逆並び)を作ればおっけいです。ようは右上から左下への対角線にだけ1が並び、他のところは0がならんだ正方形ということです。
これで数字がその値の大きさ順に並んでなくてもそのままの逆順になると思うのですがお試しください。
お礼が遅くなり、大変申し訳ありません。
MMULT関数、始めて知りました。
行列の積を返す関数、みたいですね。
行列を少し勉強すれば、使いまわせそうです。
ありがとうございます!
No.1
- 回答日時:
貼り付けた後にソートっていう動きではダメでしょうか?
当方、マクロ記憶にてやってみました。
Sub Macro4()
Range("A1:A3").Select
Selection.Copy
Range("A4").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Selection.Sort Key1:=Range("A4"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
:=xlPinYin, DataOption1:=xlSortNormal
End Sub
お礼が遅くなり、大変申し訳ありません。
>Order1:=xlDescending
実際に実行せずの意見で、違っていたら申し訳ないのですが、
上記記述から推測するに、単純に並べ替えるのでしたら、
少し意図と違うかな、と。
1
2
3
4
みたいなケースでしたらいいのでしょうが、場合によっては
1
6
5
2
を
2
5
6
1
と並べ替えたい場合もあるのです。
どちらにせよ、お忙しい中ご回答ありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelの警告について
-
Excelで数値を時間数に変換する...
-
エクセル折れ線グラフについて...
-
エクセル IF計算式?でしょうか?
-
【マクロ】for nest について ...
-
EXCELで数値が異なった数字を足...
-
Excelについて。Excelに縦1列に...
-
エクセル、LibreOffice Calcプ...
-
エクセルを使用して、円周率を...
-
エクセルの数式バーのフォント...
-
【マクロ】マクロが割当てされ...
-
エクセルでファイルの最終更新...
-
【マクロ】AブックからBブック...
-
index関数の説明をお願いします。
-
Excelで時間の計算の方法 7時45...
-
【Excel】Powerクエリーの取り...
-
エクセルマクロを教えてほしい...
-
エクセルのセルの書式ユーザー...
-
エクセルで曜日を入れたい
-
【マクロ】アクティブセルの、...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルの数式バーのフォント...
-
エクセルでファイルの最終更新...
-
2列に入っているデータを1列...
-
データチェックを行うエクセル...
-
再質問です。マクロの修正箇所...
-
エクセルで 自動的に◯や数字を...
-
数字入力後他の文字等が表示さ...
-
Excel 小さくなったスクロール...
-
F9キーについて。
-
【ExcelVBA】ダブルクォーテー...
-
Excelに詳しい方! B列が「日...
-
セルの数を求めたい
-
Excelを無料で使うには? パソ...
-
IFとIFS関数
-
【Excel】別シートから条件に合...
-
EXCELの散布図で日付が1900年に...
-
ある表にフィルターをかけて出...
-
【ExcelVBA】名前を付けて保存→...
-
Excelセルを跨いで合計を出す方法
-
エクセルのツールバーから数値...
おすすめ情報