
下記のマクロをご覧ください。動きます
質問は、添付画像、右下のようにオートフィルターがかかっている状態にて
マクロを実行すると
5行目の何もないところにデータが転記されて欲しいですが、されません
図左下の4行目のデータを、上書きしてよいかの質問もなしにて
図の右下の4行目に転記元のデータに【書き換えてしまいます】
やりたいことは、オートフィルターが入っていても
【5行目に転記をしてほしいです=最終行】
最悪、できなければ、上書きしてよいか【質問をして欲しいです】
ご存じの方いましたら、教えて下さい
~マクロについて~
・転記先ファイルは共有
・複数人にて利用
【マクロ内容】
・データを転記する
・book1のA1からI1までを、book2のB2からJ2の【最終行】に転記
・転記先の行に既に、データが他メンバーより、入力されていれば、自分のデータか、相手のデータか
⇒どっちをいかすか、質問が出る。エクセル標準機能。
・例:添付画像にて実行しようとした時にエクセル5行目にデータ転記されるが、もし、先に
⇒他メンバーがデータを入力済みであれば、どっちのデータを、いかすか質問が出る
【コード】
Sub 本1()
Dim ws1 As Worksheet
Dim wb2 As Workbook
Dim ws2 As Worksheet
Dim maxrow2 As Long
Dim row2 As Long
Dim i As Integer
Set ws1 = Worksheets("転記元")
For i = 1 To Workbooks.Count
If Workbooks(i).Name = "book2.xlsx" Then '転記先のブック。
Set wb2 = Workbooks(i)
End If
Next
Set ws2 = wb2.Worksheets("転記先") '転記先シート
maxrow2 = ws2.Cells(Rows.Count, "B").End(xlUp).Row '転記先のブックB列
row2 = maxrow2 + 1
ws2.Cells(row2, 2).Resize(1, 8).Value = ws1.Range("A1").Resize(1, 8).Value '転記元から転記先へ7セル分を転記.a1から7セル分。天気先。1列目から。
ws1.Range("I1").Copy ws2.Cells(row2, 10).Resize(1, 1)
wb2.Save '転記先のブックを上書き
End Sub

No.2ベストアンサー
- 回答日時:
No1です。
>オートフィルターにて最終行が非表示になっていても
>以下の方法であれば、途中行ではなく、最終行を
>見つける事が出来るという事でしょうか?
はい。
試してみれば、すぐにわかることですが・・
非表示行であってもセルの値は取得できますので、1セルずつ調べる方法を取れば、ご質問のように非表示の行があっても最終行を取得できるという意味です。
>・UsedRange の最下行から上に順に、EMPTYを調査
>・最終行は、EMPTYの次の行が最終行となる
違います。
下から上に調べる場合は、
最初に見つかる「Emptyではない行」が最終行。
その次の行が「最終行の次の行」。
となります。
fujillin
いつもご指導ありがとうございます
・UsedRangeはうまく出来たのですが、最終行が途中に見えないゴミ
がセルはいっており、最終行がはるか下となり、現実的に
最終行に転記できませんでした
⇒ゴミは、行削除で消せますが、かなり多くの行にあり
⇒現実的でありまあせんでした
・次にEmptyは、上から数えますが、事例をネットにのっておらずに
つくれませんでした
・最後に上記をヒントに以下リンクにて、オートフィルターが
入っていても、正しい最終行の取得・転記できる方法があったので
同方法にしました
⇒いつも、ご指導ありがとうございます
https://www.excellovers.com/entry/lastrow01
No.1
- 回答日時:
こんばんは
ファイル共有時の挙動については環境がないので、試せませんけれど・・
>やりたいことは、オートフィルターが入っていても
>【5行目に転記をしてほしいです=最終行】
の部分に関しての回答です。
ご提示のコードで、最終行を取得しようとしていると思われる
> ~.End(xlUp).Row
は、手操作の End+↑ と同じ挙動をします。
この場合、フィルター操作に限らず「非表示の行」は無視されます。
ですので、シート上に非表示行が存在する場合には、正確には「表示されている最終行」を取得することになります。
この結果、ご質問のような事象になっているものと推測します。
「表示されている/いないに拘わらず最終行」を取得なさりたいのであれば、セルを順に調べて最初のEmptyではないセルを調べれば、お求めの結果になるかと。
(その列には空白行が途中に存在しない保証があるなら、上から順に調べて、最初のEmptyなセルを得れば、それが「最終行の次の行」になります)
下から順に調べる場合は、Rows.Count行からでは無駄が多いでしょうから、シートの UsedRange の最下行から上に順に調べてゆくようにすれば宜しいでしょう。
・原因はご指摘のとおりです
>シート上に非表示行が存在する場合には、正確には「表示されている最終>行」を取得することになります。
>この結果、ご質問のような事象になっているものと推測します。
オートフィルターにて最終行が非表示になっていても
以下の方法であれば、途中行ではなく、最終行を
見つける事が出来るという事でしょうか?
・UsedRange の最下行から上に順に、EMPTYを調査
・最終行は、EMPTYの次の行が最終行となる
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 3つのマクロを連続実行の中で、1つ目のマクロ要件を満たさなかったら、マクロ2・3を実行しない為には 1 2023/10/15 13:42
- Visual Basic(VBA) クリップボードに貼付している文字列が、マクロで別ブックへ転記すると、消えてしまう 1 2023/10/15 13:36
- Excel(エクセル) 【マクロ】セルの塗りつぶし色をbook1からbook2へ転記したい 4 2023/09/27 10:50
- Excel(エクセル) 【マクロ】違うフォルダにあるファイルから、転記するには? 4 2023/09/26 19:49
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- Excel(エクセル) マクロを修正できないものか、統合シートについて 3 2021/12/07 09:26
- Excel(エクセル) VBA Scripting.Dictionary 連想配列 複数参照する方法 2 2021/12/17 01:52
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) マクロで最終行を取得したい 4 2023/05/28 12:14
- Visual Basic(VBA) 【補足欄が足りなかったため、こちらで再質問させていただきます。】 Excelの転記マクロについて、教 4 2023/09/27 08:51
このQ&Aを見た人はこんなQ&Aも見ています
-
excel VBA 2つのシートの特定の列を比較して同じ値のセルがあったらその行を上書きしたい
Excel(エクセル)
-
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
VBAについて質問。別シートに転記、再度修正すると上書き保存するVBAを作成する方法を知りたいです。
Visual Basic(VBA)
-
-
4
VBA 空白行に転記する
Visual Basic(VBA)
-
5
【マクロ】book1からbook2への適切な転記が出来ない件
Excel(エクセル)
-
6
データ転記後の値のクリア
Excel(エクセル)
-
7
i=cells(Rows.Count, 1)とi=cells(Rows.Count, 2)の違い
Visual Basic(VBA)
-
8
VBA 別ブックから条件に合うものを転記したいです
Visual Basic(VBA)
-
9
EXCEL VBA で指定した範囲に入力があるかどうか?
Visual Basic(VBA)
-
10
VBA 数式を残して値をクリアについて
Excel(エクセル)
-
11
Do~Loopした回数をカウントしたい
Visual Basic(VBA)
-
12
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
13
【EXCEL】【VBA】空欄は飛ばして処理する方法を教えて下さい。
Excel(エクセル)
-
14
マクロで空白セルを詰めて別シートに転記
Visual Basic(VBA)
-
15
VBA別シートの最終行の次行へ転記したい。
Visual Basic(VBA)
-
16
Excel VBA マクロ ある列の最終行迄を参照し、別の列の空白セルに値を入力したいです
Visual Basic(VBA)
-
17
セルに値が入っていた時の処理
Visual Basic(VBA)
-
18
Excelマクロで空白セルを詰めて別シートに転記するにはどうすればよいでしょうか?
Excel(エクセル)
-
19
【マクロ】AブックからBブックへデータコピーの後、Bブックに上書きされないようにするには?
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テキスト文書のデータを分割で...
-
エクセルの関数で範囲のある数...
-
エクセルで長い行を5行ごとに1...
-
ワードへ差し込みするエクセル...
-
テキストデータのPDFをWordで開...
-
エクセル 2つの文言以外を反映...
-
エクセルでどう処理するのでし...
-
EXCELのデータカウント
-
マクロを使って、抽出したデー...
-
Excel:セルの移動をVBAで行い...
-
差込印刷について
-
エクセルで請求書をこしらえま...
-
エクセルの日付加工について
-
SUMIFS関数の計算結果が違います
-
エクセル 数値を日付データに...
-
【エクセル】区切り文字が含ま...
-
0:00をカウントしない方法
-
エクセル 初歩
-
このCSVを加工してからアクセス...
-
EXCELの横列を挿入しながら縦列...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで長い行を5行ごとに1...
-
【エクセル】区切り文字が含ま...
-
テキストデータのPDFをWordで開...
-
差し込み印刷で文字列が「0」と...
-
エクセルの関数で範囲のある数...
-
SUMIFS関数の計算結果が違います
-
オブジェクトブラウザでデータ...
-
COUNTIFS関数で日付データを数...
-
エクセルでプルダウン選択され...
-
エクセルで時間の合計ができません
-
マクロ 行挿入で数式も反映す...
-
DBで改行が入っているデータをE...
-
斜めの貼り付け
-
0:00をカウントしない方法
-
Excel 条件付き書式で、別シー...
-
膨大なデーターの変更点のみ抽...
-
差し込み印刷で、生年月日を昭...
-
【マクロ】転記ツール。転記先...
-
エクセルで「データ」の「区切...
-
エクセルで列にあるユニークな...
おすすめ情報