人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

質問です
現在、最終行はCtrl+Endで空白行に移動します
データの終わりに必ずくるようにするにはどうしたら
よいでしょうか


sheet1に1行目からn行のデータがあります
このn行のデータをF列のある条件によって
sheet3
sheet5
sheet6
に振分けています
仮にこの結果データ行が

sheet3 10行
sheet5 15行
sheet6 20行

となった場合S列まであるとして
最終行はCtrl+Endで(データの終わり)
sheet3 S列の10行目
sheet5 S列の15行目
sheet6 S列の20行目

になるようにするにはどのような方法がありますか
マクロでできればお願いします
よろしくお願いします


AからS列までに空白列はあります
列の最終はS列で変わりません
行は常に変化しますn行です
できれば保存しないで解決したいです

●質問者: inosisi
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● きゃづみぃ
●20ポイント

とりあえず 最終列、行を選択するマクロを作ってみました。

Sub allctlend()
 For i = 1 To Sheets.Count
 Sheets(i).Select
 With ActiveSheet.UsedRange
 MaxRow = .Rows(.Rows.Count).Row
 MaxCol = .Columns(.Columns.Count).Column
 End With
 Sheets(i).Cells(MaxRow, MaxCol).Select
 Next
End Sub


inosisiさんのコメント
マクロ実行すると空白の行に飛びますがデータの最終行から空白行までを削除するマクロをあわせてできますか 空白行を削除してデータの最終行へ飛びたいのですが

inosisiさんのコメント
空白行を削除して保存したあとCtrl+Endするまたはマクロ実行するととデータの最終へ飛びます この空白行を削除するマクロはできますか

きゃづみぃさんのコメント
途中の空白行を 削除するということでしょうか?

きゃづみぃさんのコメント
マクロは 何かある行にとぶと思いますが・・・。

inosisiさんのコメント
はい途中の空白行を削除するマクロです マクロは何かある行にとぶとのことですが空白行にとびます 見た目は空白行ですがなにかデータがあるということでしょうか

inosisiさんのコメント
このマクロで最終列、行を選択するsheetは sheet3 sheet5 sheet6 のみに限定することはできますか

inosisiさんのコメント
sheetが上記の3つに限定できれば空白行があるかないかの判断用マクロとして使いたい と思います

きゃづみぃさんのコメント
このマクロを変更しました。 >|vb| Sub allctlend() For i = 1 To Sheets.Count s = Sheets(i).Name If s = "Sheet3" Or s = "Sheet5" Or s = "Sheet6" Then Sheets(i).Select With ActiveSheet.UsedRange MaxRow = .Rows(.Rows.Count).Row MaxCol = .Columns(.Columns.Count).Column End With Sheets(i).Cells(MaxRow, MaxCol).Select End If Next End Sub ||<

inosisiさんのコメント
確認しました ありがとうございました

2 ● きゃづみぃ
●40ポイント
Sub allctlend()
 Dim MaxRow As Long
 Dim MaxCol As Long
 Dim i As Long
 Dim b As Long
 
 
 For i = 1 To Sheets.Count
 Sheets(i).Select
 With ActiveSheet.UsedRange
 MaxRow = .Rows(.Rows.Count).Row
 MaxCol = .Columns(.Columns.Count).Column
 End With
 For b = MaxRow To 1 Step -1
 If Application.WorksheetFunction.CountA(ActiveSheet.Range(CStr(b) & ":" & CStr(b))) = 0 Then
 Sheets(i).Range(CStr(b) & ":" & CStr(b)).Delete Shift:=xlUp
 End If
 Next b
 
 With ActiveSheet.UsedRange
 MaxRow = .Rows(.Rows.Count).Row
 MaxCol = .Columns(.Columns.Count).Column
 End With
 Sheets(i).Cells(MaxRow, MaxCol).Select
 Next
End Sub


こちらは どうかな?


inosisiさんのコメント
うまくいきました ありがとうございます あと申し訳ないですがsheetに名前をつけていますので do au sb この3つのみに限定してマクロ実行できるようにおねがいします よろしくお願いします

きゃづみぃさんのコメント
変更に対応するのは どの マクロでしょうか? 一番目? 二番目? 三番目?

inosisiさんのコメント
sheet3(do) sheet5(au) sheet6(sb) になります

inosisiさんのコメント
変更に対応するのは どの マクロでしょうか? No2とNo3です

きゃづみぃさんのコメント
>|vb| Sub allctlend() Dim MaxRow As Long Dim MaxCol As Long Dim i As Long Dim b As Long For i = 1 To Sheets.Count If Sheets(i).Name = "do" Or Sheets(i).Name = "au" Or Sheets(i).Name = "sb" Then Sheets(i).Select With ActiveSheet.UsedRange MaxRow = .Rows(.Rows.Count).Row MaxCol = .Columns(.Columns.Count).Column End With For b = MaxRow To 1 Step -1 If Application.WorksheetFunction.CountA(ActiveSheet.Range(CStr(b) & ":" & CStr(b))) = 0 Then Sheets(i).Range(CStr(b) & ":" & CStr(b)).Delete Shift:=xlUp End If Next b With ActiveSheet.UsedRange MaxRow = .Rows(.Rows.Count).Row MaxCol = .Columns(.Columns.Count).Column End With Sheets(i).Cells(MaxRow, MaxCol).Select End If Next End Sub ||<

inosisiさんのコメント
ありがとうございました お手数おかけしました うまくいきました

3 ● きゃづみぃ
●40ポイント ベストアンサー

もひとつ


Sub allctlend2()
 Dim MaxRow As Long
 Dim MaxCol As Long
 Dim i As Long
 Dim b As Long
 
 
 For i = 1 To Sheets.Count
 Sheets(i).Select
 With ActiveSheet.UsedRange
 MaxRow = .Rows(.Rows.Count).Row
 MaxCol = .Columns(.Columns.Count).Column
 End With
 For b = MaxRow To 1 Step -1
 If Application.WorksheetFunction.CountA(ActiveSheet.Range(CStr(b) & ":" & CStr(b))) = 0 Then
 Sheets(i).Range(CStr(b) & ":" & CStr(b)).Delete Shift:=xlUp
 Else
 Exit For
 End If
 Next b
 
 With ActiveSheet.UsedRange
 MaxRow = .Rows(.Rows.Count).Row
 MaxCol = .Columns(.Columns.Count).Column
 End With
 Sheets(i).Cells(MaxRow, MaxCol).Select
 Next
End Sub


最終行と判断された行からデータがある行までを削除。


inosisiさんのコメント
うまくいきました ありがとうございます あと申し訳ないですがsheetに名前をつけていますので do au sb この3つのみに限定してマクロ実行できるようにおねがいします よろしくお願いします

inosisiさんのコメント
sheet3(do) sheet5(au) sheet6(sb) この3つのみに限定してマクロ実行できるようにおねがいします よろしくお願いします

inosisiさんのコメント
変更に対応するのは どの マクロでしょうか? No2とNo3です

きゃづみぃさんのコメント
>|vb| Sub allctlend() Dim MaxRow As Long Dim MaxCol As Long Dim i As Long Dim b As Long For i = 1 To Sheets.Count If Sheets(i).Name = "do" Or Sheets(i).Name = "au" Or Sheets(i).Name = "sb" Then Sheets(i).Select With ActiveSheet.UsedRange MaxRow = .Rows(.Rows.Count).Row MaxCol = .Columns(.Columns.Count).Column End With For b = MaxRow To 1 Step -1 If Application.WorksheetFunction.CountA(ActiveSheet.Range(CStr(b) & ":" & CStr(b))) = 0 Then Sheets(i).Range(CStr(b) & ":" & CStr(b)).Delete Shift:=xlUp Else Exit For End If Next b With ActiveSheet.UsedRange MaxRow = .Rows(.Rows.Count).Row MaxCol = .Columns(.Columns.Count).Column End With Sheets(i).Cells(MaxRow, MaxCol).Select End If Next End Sub ||< シート名は If Sheets(i).Name = "do" Or Sheets(i).Name = "au" Or Sheets(i).Name = "sb" Then の箇所を 変更してください。

inosisiさんのコメント
ありがとうございました お手数おかけしました うまくいきました
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ