No.3ベストアンサー
- 回答日時:
#1です
失礼、何かの続きだったのかな?
だからIntersect使っているのかな? #1の内容を訂正します。
Destination:=Columns(ActiveCell.Column + 1)
しっかり確認していません出した。1行目から出力してよいのでしょうか?
>1つ右の列にコピーする で思い込んでしまいました。
Columns(ActiveCell.Column + 1)をそのまま使用するなら、
代入式はあまり良くないかな(処理時間がかかるかも)
なので、値のみをコピペ #1のものに付け加え(セルが移動しないように)(変数に入れてみました)
Dim acCell As Range
Set acCell = ActiveCell
Application.ScreenUpdating = False
Intersect(ActiveCell.EntireColumn, Range("3:1000")).Copy
Cells(1, ActiveCell.Column+1).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
acCell.Select
Application.ScreenUpdating = True
代入式を使う場合は、範囲を指定した方が良いと思います。
代入式の場合、範囲を変えず位置を変えるイメージ
Dim myRng As Range
Set myRng = Intersect(ActiveCell.EntireColumn, Range("3:1000"))
myRng.Offset(1 - myRng.Row(), 1).Value = myRng.Value
#1と合わせてご確認ください。
ありがとうございます!!!
Qさん、今の僕にはレベルが高すぎる回答でまるで異次元です。
ちなみにIntersectは意味をしらず独学で辿り付きました、素人すぎまして、きっと使っている言葉の本来の意味を理解していないけど、とりあえず形になっていれば、、、っという感じで書いているのだと自分自身で思います。
今後もご指導いただけると幸いです。
No.4
- 回答日時:
#1#3です。
大丈夫です。自身で調べて検証すれば、すぐに理解されると思いますよ。
「だからIntersect使っているのかな」あまり見ない使い方でしたので。
>Intersectは意味をしらず
文字通り交差するを意味していると思います。
参考サイト
http://officetanaka.net/excel/vba/tips/tips118.htm
Intersect(ActiveCell.EntireColumn,Range(“3:1000”))は、
アクティブなセルのある列の全行と3行から1000行の全列の範囲の
交わるセル範囲となります。
A列にアクティブセルがある場合、A3:A1000のセル範囲です。
なので今回の目的にはあまり使われないと思いますが、Intersectは
目的セルを指定(特定)する場合や検証する場合などにはよく使われると思います。
Intersect(ActiveCell.EntireColumn,Range(“3:1000”))は、
Range(Cells(3, ActiveCell.Column), Cells(1000, ActiveCell.Column))
とセル範囲としては、同じです。
代入式=で結ぶ場合は基本的に範囲が同じの=Valueなので
元となる範囲をレンジオブジェクト変数に1度セットしてしまえば、
Offsetで範囲全体を移動するイメージで代入(参照)する事が出来ます。
Dim myRng As Range
Set myRng = Range(Cells(3, ActiveCell.Column), Cells(1000, ActiveCell.Column))
myRng.Offset(1 - myRng.Row(), 1).Value = myRng.Value
myRng.Row()はセットした範囲の初めの行番号、例の場合3
myRng.Offset(1 - myRng.Row(), 1)は、範囲設定を変えても対象行が1行目になるようにするための工夫)
レンジオブジェクト変数には、注意点もありますが別の話として
ResizeやOffsetを調べてくださいね。
回答のResizeやOffsetを理解するとシンプルで読解性が上がるコードが書けると思います。(私は独学の素人なので、うけうりですが、実際とても重宝します)
質問スレッドから離れてしまうので、このくらいで、、
めちゃくちゃ理解出来ました!!
説明がすごく判り易いです、そしてDimで変数?に代入する方がしっくりくると思いました!!
ありがとうございます!!
またよろしくお願いいたします。
No.2
- 回答日時:
こんにちは
10000行じゃないってことですね?
>Destination:=Columns(ActiveCell.Column + 1)
って、「右にコピー」とは違うと思うけれどどっちなんでしょうかね?
とりあえず。
Range("A3:A1000").Offset(, ActiveCell.Column).Value = _
Range("A3:A1000").Offset(, ActiveCell.Column - 1).Value
ありがとうございます!
大変勉強になりました!!
ものすごくシンプルなのに出来ました!
Range("A3:A1000")この範囲指定だとA列をコピーしそうなのに、私のやりたいことがすごくシンプルに出来ています!
よろしければ解説をお願いしたいのですが。
10000行ではないです。1000行です。
Destination:=Columns(ActiveCell.Column + 1)は右にコピーではなくどんな解釈ですか?
このど素人にどちらも解説をお願いします。
No.1
- 回答日時:
こんにちは、
>数値のみコピーしたいです
方法はいくつかありますが、
copyでなく 代入式(=)を使われるのが理解し易いかもしれません。
代入式は、右辺と左辺同じ範囲の.valueで繋ぎます。
ご質問のコードの場合、位置を変えるだけなのでOffsetを使い
Intersect(ActiveCell.EntireColumn, Range("3:1000")).Offset(, 1).Value _
= Intersect(ActiveCell.EntireColumn, Range("3:1000")).Value
のような感じです。
必ず3~1000行までなら
Cells(3, ActiveCell.Column).Resize(998).Offset(, 1).Value _
= Cells(3, ActiveCell.Column).Resize(998).Value
でも良いかも
998の意味は 1000行で始まりが3行目 スタートは1なので
1000-(3-1)=998 判り難くなるかも。。(勧めるべきでないかも)
ちなみに、コピーなら
Intersect(ActiveCell.EntireColumn, Range("3:1000")).Copy
Cells(3, ActiveCell.Column).Offset(, 1).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
隣の3行目に値のみペースト 範囲はExcel任せです。
Application.CutCopyMode = False は 値貼り付けの場合、コピーモードが残るのでコピーモードを解除。
ESCキーを押したのと同じ事になります。
ありがとうございます!!2つ目は範囲指定が少し複雑ですが、どちらも肝は.Valueという事ですね!すごく勉強になりました!!
3つ目のはspecialなpasteで=の後がValueのみという解釈で良いのでしょうか?
前回の質問で最後までお付き合い頂きました方ですよね、ベストアンサーをするとやり取り出来なくなるとしらず。。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) サブフォルダ(データ)にある複数の.xlsxファイルのSheet3のA2セルの値で01から左側をB2 2 2022/08/14 15:46
- Excel(エクセル) エクセル 値をコピペした時に、条件付き書式で塗られた背景色もペーストさせる 2 2023/04/05 17:21
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Excel(エクセル) エクセルのマクロについて教えてください。 3 2023/02/07 14:47
- Excel(エクセル) エクセルでの左のセルのコピー 3 2022/07/25 12:31
- Excel(エクセル) Excelにて、行の最後のセルの値をコピーして別sheetに張りつけるVBAコードをご教授願います 3 2022/11/20 14:35
- Excel(エクセル) VBA 特定の列に入っているテキストをコピペ 2 2023/06/14 11:24
- Visual Basic(VBA) VBAで重複した値のセルに色付けをしたい 1 2022/11/02 16:12
- Excel(エクセル) エクセルの自動更新のタイミングについて 1 2022/07/20 16:12
- Excel(エクセル) エクセルマクロで教えてください 2 2022/05/04 09:07
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAマクロ実行時エラーの修正に...
-
エクセルVBA 配列からセルに「...
-
Excel UserForm の表示位置
-
VBA 複数条件の分岐処理の上手...
-
Excelで空白セル直前のセルデー...
-
特定の色のついたセルを削除
-
入力規則のリスト選択
-
Excel VBA IF文がうまく動作し...
-
EXCEL VBA 文中の書式ごと複写...
-
DataGridViewのフォーカス遷移...
-
DataGridViewで指定したセルの...
-
【VBA】【ユーザーフォーム_Lis...
-
EXCEL 2010 VBAでピボットで複...
-
Excel VBAでCheckboxの名前を変...
-
VBA にて、条件付き書式で背景...
-
【VBA】写真の貼り付けコードが...
-
VBAでユーザーフォームにセル値...
-
JTableにチェックBOXの埋め込み...
-
VBA コンボボックスで選んだも...
-
セルの半透明着色処理
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAマクロ実行時エラーの修正に...
-
Excelで空白セル直前のセルデー...
-
エクセルVBA 配列からセルに「...
-
Excel UserForm の表示位置
-
【Excel VBA】一番右端セルまで...
-
エクセルの合計を自動で表示さ...
-
【VBA】【ユーザーフォーム_Lis...
-
EXCEL VBA 文中の書式ごと複写...
-
下記のマクロの説明(意味)を...
-
Excel VBAでCheckboxの名前を変...
-
【VBA】写真の貼り付けコードが...
-
特定の色のついたセルを削除
-
VBA:日付を配列に入れ別セルに...
-
VBA にて、条件付き書式で背景...
-
DataGridViewのフォーカス遷移...
-
関数の引数でrangeを指定したとき
-
入力規則のリスト選択
-
DataGridViewで指定したセルの...
-
VBAでユーザーフォームにセル値...
-
複数指定セルの可視セルのみを...
おすすめ情報