[[20180810145420]] 『最終行から下に文字挿入』(AJ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『最終行から下に文字挿入』(AJ)

マクロの質問です
よろしくお願いします
J5以下で最終行からひとつ下の行のX列に1000行目まで"*"を
埋め込みたいのですが、どのようなマクロで可能でしょうか?
ご教授お願いします。

Range("J5").End(xlDown).Offset(1,14).Select

< 使用 Excel:Excel2016、使用 OS:Windows10 >


ひとつ下の行から1000行目までという意味であれば
Range("J5").End(xlDown).Offset(1, 14).Resize(1000 - Range("J5").End(xlDown).Row).Value = "*"
(名無し) 2018/08/10(金) 15:14

ForNext版
Sub A()
    Dim i As Range
    For i = Range("J5").End(xlDown).Row + 1 To 1000
        Cells(i, "J") = "*"
    Next i
End Sub

ForEach版
Sub B()

    Dim Sr As Long, myRange As Range
    Sr = Range("J5").End(xlDown).Row + 1
    For Each myRange In Cells(Sr, "J").Resize(1001 - Sr, 1)
        myRange = "*"
    Next
End Sub

配列版
Sub C()

    Dim i As Long, Sr As Long
    Sr = Range("J5").End(xlDown).Row + 1
    ReDim 配列(1001 - Sr)
    For i = 0 To 1001 - Sr
        配列(i) = "*"
    Next i
    Cells(Sr, "J").Resize(1001 - Sr, 1) = WorksheetFunction.Transpose(配列)
End Sub

参考になれば幸いです
(TAKA) 2018/08/10(金) 15:28


名無しさんの回答みたらなにしてんだ俺は、、、ってなりました笑

Sub D()

    Dim Sr As Long
    Sr = Range("J5").End(xlDown).Row + 1
    Cells(Sr, "J").Resize(1001 - Sr, 1) = "*"
End Sub

これで大丈夫です。

(TAKA) 2018/08/10(金) 15:51


(名無し)さん
ありがとうございました。
無事実行できました。

(TAKA)さん
ありがとうございました。
Cells(Sr, "X")ではないでしょうか?
上記にて出来ましたが単純にここだけで済むか分かりませんが・・・
一応希望のことはできました。

(AJ) 2018/08/10(金) 16:32


X列でしたね、、
よく読んでませんでした、すみません。
(TAKA) 2018/08/10(金) 16:38

もう解決してるっぽいので終わった話にコメント付ける形になっちゃいますが、
>J5以下で最終行からひとつ下の行のX列に1000行目まで"*"を埋め込みたいのですが
これを、
 (1)アクティブシートのJ5セルから下方向に見ていって最終行を確認して(途中に歯抜けは無いものとする)
 (2)同じシートのX列のうち、(1)で確認した最終行の1行下から1000行目までのセルに「*」という文字を入力したい。

と解釈した場合、Resizeを使わない方法としてこんな手もあるとおもいます。

    Sub sample()
        Dim i As Long

        With ActiveSheet
            i = .Range("J5").End(xlDown).Row + 1

            If i > 1000 Then Exit Sub

            .Range(.Cells(i, "X"), .Cells(1000, "X")).Value = "*"
        End With

    End Sub

※ついでに、(1)で取得された行が1000を超えていたら、実行されないように条件分岐を追加しておきました。いらなきゃ削除で。

(もこな2) 2018/08/10(金) 20:30


(もこな2)さん
回答ありがとうございます。
今までコメントいただいていたに気がつきませんでした。
解決したつもりでいたのですが

>J5以下で最終行からひとつ下の行のX列に1000行目まで"*"を埋め込む
上記の条件のほかにX5から行として始まっているのですがJ5の最終行から
今は指定して"*"を書き込んでいますが

X5以下でJ5最終行より上の行に、X列に空白がある場合も空白セルには同じく
"*"を書き込みたいのですが、お知恵お貸しください。
よろしくお願いします。

以下の例として5行目から150行目までのX6が空白なので"*"記入

            J                              X
5   △□                               ××
6   □○                              空白
:                    ○△
:                    □□ 
150     ○○               ×○    
151                    *
152                    *
:                    *
1000                    *

(AJ) 2018/08/11(土) 02:42


>以下の例として5行目から150行目までのX6が空白なので"*"記入

もし、J6もX6も空白の場合は?
J列関係なく。X列5行目から150行目までの空白セルは"*"というルールでしょうか

(マナ) 2018/08/11(土) 06:53


 説明が曖昧だけど
 J列の最終行までのX列の空白に*,J列の最終行以降はX列にデータがあっても*ということなら

 Sub test()
     Dim LastR As Long, x As String
     LastR = Range("j" & Rows.Count).End(xlUp).Row
     With [x5:x1000]
         x = .Address
         .Value = Evaluate("if((row(" & x & ")<=" & LastR & ")*(" & x & "<>"""")," & x & ",""*"")")
     End With
 End Sub
(seiya) 2018/08/11(土) 11:04

(マナ)さん
説明が下手ですみません。
>もし、J6もX6も空白の場合は?
J列は必ずデータは入ります。空白は無しという条件で構いません。

>J列関係なく。X列5行目から150行目までの空白セルは"*"というルールでしょうか
J列の記入済み最終行まではX列空白行には"*"挿入し、J列最終行以降はX列にデータが
あるなしにかかわらず(多分データがあることは無い)"*"記入という感じです。

(seiya)さん
ありがとうございます。
解読不能のマクロコードなので、とりあえず実行してみました。
結果は、希望通りに動いています もう少し色々なケースでテストさせてください。

(AJ) 2018/08/11(土) 12:13


ということは、J列は全く関係ないのでは?

(マナ) 2018/08/11(土) 12:26


失礼しました。理解しました。
J列最終行以下のX列は、すべて"*"に置換するということでしたか。

(マナ) 2018/08/11(土) 12:39


(seiya)さん
ありがとうございました。
完璧です。
ちょっと理解できないので時間を掛けて
解読してみたいと思います。
(AJ) 2018/08/11(土) 15:24

 1) とりあえず、J列の最終行を100とします。
 2) Y5:Y1000を選択
 3) Y5 に
 =IF((ROW(X5:X1000)<=100)*(X5:X1000<>""),X5:X1000,"*")
 と入力して、Ctrl + Shift + Enter(配列数式)で確定してください。

 Y列に表示された結果をメモリ上で再現してX列に代入しています。

 ループ処理ならこんな感じで

 Sub test()
     Dim LastR As Long, r As Range
     LastR = Range("j" & Rows.Count).End(xlUp).Row
     For Each r In Range("x5:x" & LastR)
        If r.Value = "" Then r.Value = "*"
     Next
     If LastR < 1000 Then Range("x" & LastR + 1 & ":x1000").Value = "*"
 End Sub
(seiya) 2018/08/11(土) 15:42

(seiya)さん
ありがとうございます。
希望のの結果は、得られました。が
マクロの方は、まだあまり理解できていません。
ループ処理のマクロの方が理解しやすく思います。

(AJ) 2018/08/12(日) 03:12


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.