• ベストアンサー

隣接した列の最後の行まで値を入れる方法 エクセルVBA

deecyanの回答

  • deecyan
  • ベストアンサー率38% (89/233)
回答No.1

A列の一番したをクリックして Ctrl を押して ↑ を押す これを マクロの記録で記録してみれば 下記になります (別に最後でなく 適当なところでもいいけど) Range("A65535").Select Selection.End(xlUp).Select 本当は Userdrange を使ったほうがいいけど、、、、

noname#41451
質問者

お礼

Selection.End(xlUp).Select は試したのですが、(1,2)に戻ってしまうので使えませんでした。L=Selection.RowではA65535までの再計算に時間がかかってしまうので、必要な行までをL=Selection.Rowとして使えないかと思ったのです。どうもありがとうございました。

関連するQ&A

  • エクセルVBAで値のカウントをしたい

    C列~AA列まで値が入っています 1行目にはタイトル 2行目からそれぞれ値が入っており、終了行は毎回ランダムです 各列毎に値の合計と1以上の値の合計数を表示するために下記のマクロを使用しているのですが、もっとスマートな方法は無いでしょうか? 現在のマクロだとマクロ行数がとても多いものになっています。 Sub Count() With Range("C2") .End(xlDown).Offset(1, 0) = _ "=SUM(" & Range(.Address, .End(xlDown)).Address(False, False) & ")" End With '本当はCの最終行に直接COUNTIFを書き込みたいが、他のセルを使用しないと0になる Range("A1") = "=COUNTIF(C2:C10000,"">=1"")" Range("A1").Select Selection.Copy Range("C1").End(xlDown).Offset(1, 0).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CommandBars("Stop Recording").Visible = False With Range("D2") .End(xlDown).Offset(1, 0) = _ "=SUM(" & Range(.Address, .End(xlDown)).Address(False, False) & ")" End With Range("A1") = "=COUNTIF(D2:D10000,"">=1"")" Range("A1").Select Selection.Copy Range("D1").End(xlDown).Offset(1, 0).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CommandBars("Stop Recording").Visible = False '以降AAまでセルの位置を変えた同一マクロを繰り返す End Sub

  • VBAで複数の行のナンバーを取得し、その行の列の値を参照して値を入れる

    下記のことをしたいのですが、調べてもわかりません。 どなたか教えてください。 よろしくお願いします。 内容: エクセルシートのA列の値が11である行ナンバーを取得(複数ある可能性があります)する。 その行のE列(5列目)の値と他のテーブルの値を参照して所定の値をA列の値が11である行のE列(5列目)に返す。 以下のVBAを書いてみましたがうまくいきません。 ----------------------------------------------------------------- Dim ROWCOUNT As Integer Dim row_array() As Variant Dim i As Integer '全行数を取得 ROWCOUNT=Worksheets("sheet1").Range("A1",Range("A65536").End(xlUp)).Count For i = 1 To ROWCOUNT If Cells(i, 1).Value = 11 Then Cells(i,1).Offset(0,5).Value=WorksheetFunction.VLookup(Cells(i, 1).Offset(0, 5).Value, Worksheets("sheet2").Range("A1:H1786"), 3, False) End If Next I

  • Excel VBA 選んだ行のあるセルの値を入れる

    Excel VBA 教えてください。 選んだ行の5列目にその(選んだ)行の10列目の値を入れたいのですがどのようにしたらいいのでしょうか。 ちなみに Sub Macro1() Cells(Target.Row, 5).FormulaR1C1 = Cells(Target.Row, 10) End Sub というように、マクロノ記録を利用してやってみましたができませんでした。 ご教授願います。

  • EXCELマクロデータのある行より下の行削除の構文

    EXCELマクロ構文について教えてください。 データのある行のひとつ下の行全体選択し、 Ctrl+Shift+↓で下部行全て選択し、右クリックで削除する 操作をマクロにしたいのでですが、 マクロ記録では上の操作は Rows("189:189").Select Range(Selection, Selection.End(xlDown)).Select Selection.Delete Shift:=xlU  になります。 この 189 という数字は 下記の変数定義で「lastRow」として取得できるのですが Dim lastRow As Long lastRow = Sheets("2CVS関西").Cells(Rows.Count, 2).End(xlUp).Row + 1 189にlastRow に置き換える方法お教えください。

  • エクセルのVBA

    AB列に複数行データがありB列の条件でその行のABのデータ を抽出し特定の場所に貼り付けたいのですが貼付け場所が 任意に選択できません。今はデータの無いA列から貼り付けていますが できればD列の1行目か2行目から貼り付ける方法を教えてください。 また今のコードでは貼付けたいデータの順番が下のデータからになってしまいます。 これも元のデータ順にしたいのでよろしくお願いします。 今使っているコードは下記の通りです。 For i = Cells(Rows.Count, 2).End(xlUp).Row To 1 Step -1 If Cells(u, 2) < "96" And Cells(u, 2) <> "0" And Cells(u, 2) <> " " Then Range(Cells(u, 1), Cells(u, 2)).Select Selection.Copy Range("A1").End(xlDown).Offset(1, 0).Activate Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End If Next

  • エクセルVBAで範囲内での位置取得(行&列)

    Sub test() Set Rng = Range("B2:E7") Rng.Cells(2, 2).Select End Sub これで、範囲Rng内では2行/2列目となるC3セルが選択されます。 では、C3セルが、範囲Rng内で何行/何列目であるかを取得するにはどのように記述すればよいのでしょうか? Rng.Cells(2, 2).Rowは、当たり前ですが、3になってしまいます。

  • 13行目のセルの値が0のとき、その列を非表示にする

    Windows7 Excel2007でマクロ作成中の初心者です。 13行目のセルの値が、0のときは、その列を非表示にするというマクロを作ろうとしましたが なかなか難しくておてあげです。探したら次のようなコードがでてきました。 ボタンを押すとK列の値を参照して「A」と表示されている行を隠し、「表示する」ボタンを押すと、 解除するという処理。 Option Explicit Private Sub Cmd隠す_Click()  Dim 行番号 As Long  '行を隠す  For 行番号 = 4 To 13   If Cells(行番号, 11).Value = "A" Then    Cells(行番号, 1).EntireRow.Hidden = True   End If  Next 行番号 End Sub Private Sub Cmd表示する_Click()  '表全体を再表示する  Cells.Select  Selection.EntireRow.Hidden = False  Selection.EntireColumn.Hidden = False  Cells(1, 1).Select End Sub このコードを利用して、13行目のセルの値が、0のときは、その列を非表示にするというコードにしたいのです。 よろしくおねがいします。

  • Excel VBAで2~4列目の3行目以下を選択

    Excel VBAで2列~4目の3行目以下すべてを選択する方法は、ないでしょうか? 2列~4目すべてを選択というのは、比較的簡単で、たとえば Sub 2to4 ()   Worksheets("Sheet1").Activate   Columns("B:D").Select End Sub とでも書けばよいのでしょうが。 http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_cell.html 要はこれから3行目までを除外する方法があればいいわけですが、 そういう方法があったら教えてください。 今は、cells(2,1)から、cells(4,5000)までを選択といったように 原始的な方法でやってますが、この方法だと数字を大きくしすぎると 2003以前のバージョンでトラブり、数字を小さくしすぎると、選択しきれなかったりと…。 いろいろ不都合が多いので…。

  • エクセルVBA どうしても処理が重いのを改善したい

    下記のコードを作りましたが、どうしても処理が2分を越えてしまいます。 書き方が下手なのか。。。修正案があればぜひともご教授願います。 行っている事は。。。 1.上から順番に最後の文字が入っている所まで検索をする。 2.1の際A2とA3セル内容を取得する。(この際にA2セルに入っているドメイン取得している)この取得した値を検索元のデータとしている。 3.2にて取得したデータを元に、検索対象セルの次行から一致する値を検索する。 4.ヒットしたら、ヒットした値がある行のE列に「1」を代入 5.全ての処理が終了したら、E列に「1」がある行全て削除 6.フィルター解除 Sub 案件抽出の重複削除() Debug.Print Time & " - 案件抽出の重複削除スタート" Application.ScreenUpdating = False Application.Calculation = xlCalculationManual Dim s As String '// 検索元データ Dim i As Long Dim SI As String '// 検索元データの結合データ Dim TD As String Dim SS As String Dim II As Long Dim AJS As Range '// 検索元データのステートメント Dim CAJS As Range '// 検索されるデータのステートメント On Error Resume Next For Each AJS In Range("A2:A" & Cells(100000, 1).End(xlUp).Row) s = Cells(AJS.Row, 2) i = InStrRev(s, "@") + 1 SI = Mid(s, i, Len(s) - i) & Cells(AJS.Row, 3) For Each CAJS In Range(Cells(AJS.Row + 1, 2), Cells(Rows.Count, 1).End(xlUp)) If Cells(CAJS.Row, 5) = "" Then SS = Cells(CAJS.Row, 2) II = InStrRev(SS, "@") + 1 TD = Mid(SS, II, Len(SS) - i) & Cells(CAJS.Row, 3) If SI = TD Then Cells(CAJS.Row, 5) = 1 End If TD = "" End If Next Next ActiveSheet.Range("$A$1:$E$2564").AutoFilter Field:=5, Criteria1:="1" Rows(2).Select Range(Selection, Selection.End(xlDown)).Select Selection.Delete Shift:=xlUp Selection.End(xlUp).Select ActiveSheet.AutoFilterMode = False Debug.Print Time & " - 案件抽出の重複削除終了" End Sub 宜しくお願い致します。

  • シート1のC列の最終行をコピーして同じ行に値貼り付けしたい

    シート1のC列の最終行を取得して その行を丸々値貼り付けするマクロを作りたいと思います。 シート3のB18の値をシート1のC列の最終行の1つ下のセルに値貼り付け すると、その行のA、B列に日付が入力される関数が入っています。(下まで) 関数が入ったままだと、うまくいかない時があるので最終行をコピーして値貼り付けしたいのですが、マクロの作り方を教えてください。 シート1の最終行に貼り付け Sheets("Sheet3").Select Range("B18").Select Selection.Copy Sheets("Sheet1").Select Range("C65536").End(xlUp).Offset(1).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CutCopyMode = False End Sub 最終行をコピーして値貼り付け Dim 最終行 As Integer 最終行 = Range("C65536").End(xlUp).Row Range("A6:C" & 最終行).Select Selection.Copy Sheets("Sheet1").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CutCopyMode = False End Sub このマクロだと、A6からC列の最終行まで全てコピーされてしまうので、C列の最終行のAからC列まで1行だけコピーできないでしょうか?