No.4ベストアンサー
- 回答日時:
No3です。
>1つ1つ転記する形になりかなり時間がかかってしまいました。
VBAの場合、シートへのアクセスに時間がかかるので、その回数を減らすようにすることで速度向上を図れます。
(速度だけを言えば、他にもいろいろありますので、検索してみてください)
とは言え、高々150セルの転記程度で時間がかかるとも思えません。
(よほど悪い環境で処理をしていれば別ですが・・)
シートへのアクセスを減らすには、まとめて読み書きするのが効果的です。
以下は、A7:A300のうちの奇数行をB列に転記する内容での例です。
Sub Sample1()
Dim V, i
V = Range("A1:A299").Value
For i = 7 To 299 Step 2
Cells(i, 2).Value = V(i, 1)
Next i
End Sub
A列へのアクセスを1回にしているので、全体でシートへのアクセス回数を半減できます。
B列に関数式がないという条件が保証されているならば、B列も同様にまとめて処理するようにして、
Sub Sample2()
Dim VA, VB, i
VA = Range("A7:A299").Value
VB = Range("B7:B299").Value
For i = 1 To 293 Step 2
VB(i, 1) = VA(i, 1)
Next i
Range("B7:B299").Value = VB
End Sub
などとすることで、シートへのアクセスを最小で済ませることが可能になります。
※ 最初にも記しましたが、150セル程度であれば、ほとんど差は感じられないはずと思いますので、あくまでもご参考までに。
何とか出来ました!感動です!!
最初の質問と奇数行のみを組み合わせて
①指定範囲(セルA6からA300)を選択しコピー
②指定範囲(セルF2からDU2)のうち最大値の列の6行目から300行目に①の「奇数行」を「数値のみ」貼付け
を下記で作ってみたら高速で実行でき(間違ってるかもしれませんが・・)
感激しています。
Sub
Dim rg As Range, n As Long
Dim VA, VB, i
VA = Range("A7:A300").Value
VB = Cells(7, n + 5).Resize(295).Value
For i = 1 To 294 Step 2
VB(i, 1) = VA(i, 1)
Next i
Set rg = Range("F2:DU2")
If Application.Count(rg) = 0 Then Exit Sub
n = Application.Match(Application.Max(rg), rg, 0)
Cells(7, n + 5).Resize(294).Value = Range("A7:A300").Value
End Sub
何度も初歩的な事ばかり聞いてすみませんでした。
おかげ様で大変勉強になり助かりました。
ありがとうございました!!
No.3
- 回答日時:
No1です。
>A6:A300の奇数行のみをコピーして貼り付ける(値のみ)事も可能でしょうか。
可能ですが、範囲が連続セルでない場合は、1センテンスでは無理です。
セル範囲をループして、奇数行のみ転記するようにしてください。
最初に頂いたコードだと高速で動かせたのでこれで行きたいのですが、Dim n As Integerをどこに入れればいいのでしょうか?
それとも別の考え方でしょうか?
No.2さんを参考に組んでみたら1つ1つ転記する形になりかなり時間がかかってしまいました。
Sub Q13679174()
Dim rg As Range, n As Long
Set rg = Range("F2:DU2")
If Application.Count(rg) = 0 Then Exit Sub
n = Application.Match(Application.Max(rg), rg, 0)
Cells(6, n + 5).Resize(295).Value = Range("A6:A300").Value
End Sub
すみませんが、ご教示下さい。
No.2
- 回答日時:
以下はChatGPTの回答です。
Sub PasteValues()
' ①指定範囲(セルA6からA300)を選択しコピー
Range("A6:A300").Select
Selection.Copy
' ②指定範囲(セルF2からDU2)のうち最大値の列の6行目から300行目に①を「数値のみ」貼付け
Dim maxCol As Integer ' 最大値がある列の列番号を格納する変数
Dim maxVal As Double ' 最大値を格納する変数
Dim i As Integer ' ループ用の変数
' セルF2からDU2のうち最大値のある列の列番号を取得
maxCol = Application.WorksheetFunction.Match(WorksheetFunction.Max(Range("F2:DU2")), Range("F2:DU2"), 0)
' 最大値のある列の6行目から300行目に値を貼り付け
For i = 6 To 300
Range(Cells(i, maxCol), Cells(i, maxCol)).PasteSpecial Paste:=xlPasteValues
Next i
' クリップボードのコピーを解除
Application.CutCopyMode = False
ありがとうございます。
私もbingのチャット機能で調べたら若干意図が外れていたのですが、ChatGPTだとかなり正確に導けるものなんですね。
因みに、同上でA6:A300の奇数行のみをコピーして貼り付ける(値のみ)事も可能でしょうか。
No.1
- 回答日時:
こんばんは
不明点は勝手に解釈しました。
以下、ご参考までに。
※ 「最大値」とは数値の最大値と解釈しました。
※ F2:DU2に数値が存在しない場合には何もしません。
※ 最大値が複数存在する場合は、列番号の小さい列を対象とします。
※ A6:A300の内容が数値かどうかのチェックはしていません。
セルの値を「値をペースト」と同等に転記します。
Sub Q13679174()
Dim rg As Range, n As Long
Set rg = Range("F2:DU2")
If Application.Count(rg) = 0 Then Exit Sub
n = Application.Match(Application.Max(rg), rg, 0)
Cells(6, n + 5).Resize(295).Value = Range("A6:A300").Value
End Sub
出来ました!
丁寧に解答頂きありがとうございます。
自分なりに調べたらもっと長いコードになってしまったのですが、こんなにシンプルになるのですね。
因みに、同上でA6:A300の奇数行のみをコピーして貼り付ける(値のみ)事も可能でしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロを教えてください 4 2022/02/04 08:05
- Excel(エクセル) 条件付き書式の色付きセルのカウント方法について 2 2022/10/21 14:51
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Excel(エクセル) エクセルVBA 作業後に選択範囲を解除する方法 5 2023/02/17 07:13
- Excel(エクセル) VBA 特定の列に入っているテキストをコピペ 2 2023/06/14 11:24
- Visual Basic(VBA) VBA CSV取り込みについて 3 2021/12/30 22:40
- Visual Basic(VBA) エクセルVBAで『A列』に新規で数値を入力し『B列』から右方向の空白セルにその値を貼り付ける方法 4 2022/11/05 08:37
- Visual Basic(VBA) 4月~3月まで12カ月横に並んだ表へ指定範囲を貼り付けたい。 Sheet2の指定範囲、Range(" 2 2022/11/30 16:37
- Excel(エクセル) エクセルのマクロでコピー後の貼り付け先を毎回指定したところにしたい 5 2022/08/12 10:47
- Visual Basic(VBA) Excelでセル内の一部のみ同じセルを検索し、そのセルと同じ行で任意の列のセルを選択する方法 2 2021/12/17 11:01
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
Excel VBAでの数値の計算についておしえてください
Visual Basic(VBA)
-
Excel VBAマクロをマスターするのに、どれ位時間掛かりますか?
Visual Basic(VBA)
-
excelのVBAについて、以下のコードに追加をお願いいたします。
Visual Basic(VBA)
-
-
4
VBAのコードを教えてください
Visual Basic(VBA)
-
5
VBEを開くのにコマンド名が「Visual Basic」な理由はなぜ?
Visual Basic(VBA)
-
6
ExcelのVBAのことで質問です。 以下のコードを入れ、ボタンを押せば作動させると写真のように画面
Visual Basic(VBA)
-
7
Cellsのコードが打てません
Visual Basic(VBA)
-
8
VBAコードが作動しません。修正したいのですが何処に原因かあるか教えて下さい。
Visual Basic(VBA)
-
9
コードを直していただきたいです。 以下のコードはネットで拾ったものをほんの少しいじった物なのですが、
Visual Basic(VBA)
-
10
マクロVBAについてご教授いただけましたらと存じます。
Visual Basic(VBA)
-
11
csvファイルを列数ごとに分割するExcelマクロが書けずに困っています
Visual Basic(VBA)
-
12
VBA 二つのブックをうまく扱えないでいます
Visual Basic(VBA)
-
13
ご教授お願いします。#NUM!が解消されません。
Visual Basic(VBA)
-
14
Excelセルに入力された文字の色を変える方法を教えてください
Visual Basic(VBA)
-
15
郵便番号検索APIにてget ElementByTagNameでうまくを取得できない
Visual Basic(VBA)
-
16
以下のコードを実行しても、オブジェクト変数または、withブロック変数が設定されていませんとエラーが
Visual Basic(VBA)
-
17
自動VBAマクロって会社の中で禁止なんですか?
Visual Basic(VBA)
-
18
ExcelのVBAコードを教えて頂けますでしょうか。 例シート2つがあります。 シート1は元データ
Visual Basic(VBA)
-
19
特定文字を入ってるCSVの特定の列を特定のexcelシートに取り込みたいです
Visual Basic(VBA)
-
20
Excel VBA コードを教えてください。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA ユーザーフォーム ボタンク...
-
screenupdatingが機能しなくて...
-
Excelで指定した日付から過去の...
-
特定のセルが空白だったら、そ...
-
i=cells(Rows.Count, 1)とi=cel...
-
ExcelVBAを使って、値...
-
Excelのハイパーリンクにマクロ...
-
スプレッドシートをGASでセル保...
-
【Excel】指定したセルの名前で...
-
エクセルvba:自己セルの情報取...
-
【VBA】指定したセルと同じ値で...
-
EXCELで変数をペーストしたい
-
エクセルVBA MATCHをユーザー...
-
RC表示に変数を入れる
-
エクセルマクロで結合セルに格...
-
VBAを使用した時間管理
-
vbsのセル値の取得について
-
EXCELのVBA-フィルタ抽出後の...
-
Sub 要具ライフ() ActiveSheet....
-
クリックされたセルの位置を取...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelVBAを使って、値...
-
特定のセルが空白だったら、そ...
-
【Excel VBA】指定行以降をクリ...
-
i=cells(Rows.Count, 1)とi=cel...
-
【Excel】指定したセルの名前で...
-
Excelで指定した日付から過去の...
-
特定の文字を条件に行挿入とそ...
-
Excel VBA、 別ブックの最終行...
-
EXCELで変数をペーストしたい
-
Excelのプルダウンで2列分の情...
-
TODAY()で設定したセルの日付...
-
Excel vbaで特定の文字以外が入...
-
screenupdatingが機能しなくて...
-
DataGridViewの各セル幅を自由...
-
Sub 要具ライフ() ActiveSheet....
-
【EXCEL VBA】Range("A:A").Fi...
-
VBAを使用した時間管理
-
VBAでセルをクリックする回...
-
セル色なしの行一括削除
-
エクセルVBAでコピーして順...
おすすめ情報