[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『最終行から下に文字挿入』(AJ)
マクロの質問です
よろしくお願いします
J5以下で最終行からひとつ下の行のX列に1000行目まで"*"を
埋め込みたいのですが、どのようなマクロで可能でしょうか?
ご教授お願いします。
Range("J5").End(xlDown).Offset(1,14).Select
< 使用 Excel:Excel2016、使用 OS:Windows10 >
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
(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
>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
もし、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
>J列関係なく。X列5行目から150行目までの空白セルは"*"というルールでしょうか
J列の記入済み最終行まではX列空白行には"*"挿入し、J列最終行以降はX列にデータが
あるなしにかかわらず(多分データがあることは無い)"*"記入という感じです。
(seiya)さん
ありがとうございます。
解読不能のマクロコードなので、とりあえず実行してみました。
結果は、希望通りに動いています もう少し色々なケースでテストさせてください。
(AJ) 2018/08/11(土) 12:13
(マナ) 2018/08/11(土) 12:26
(マナ) 2018/08/11(土) 12:39
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
(AJ) 2018/08/12(日) 03:12
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.