
下記のマクロをご覧ください。動きます
質問は、添付画像、右下のようにオートフィルターがかかっている状態にて
マクロを実行すると
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
excel VBA 2つのシートの特定の列を比較して同じ値のセルがあったらその行を上書きしたい
Excel(エクセル)
-
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
-
4
VBA 空白行に転記する
Visual Basic(VBA)
-
5
VBAについて質問。別シートに転記、再度修正すると上書き保存するVBAを作成する方法を知りたいです。
Visual Basic(VBA)
-
6
VBA別シートの最終行の次行へ転記したい。
Visual Basic(VBA)
-
7
【マクロ】book1からbook2への適切な転記が出来ない件
Excel(エクセル)
-
8
VBA 数式を残して値をクリアについて
Excel(エクセル)
-
9
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
10
Excel VBAでのWorksheet_Changeが動作しない原因
Excel(エクセル)
-
11
VBAで繰り返しコピーしながら下へ移動させる方法
Excel(エクセル)
-
12
マクロで空白セルを詰めて別シートに転記
Visual Basic(VBA)
-
13
i=cells(Rows.Count, 1)とi=cells(Rows.Count, 2)の違い
Visual Basic(VBA)
-
14
Excelマクロで空白セルを詰めて別シートに転記するにはどうすればよいでしょうか?
Excel(エクセル)
-
15
Do~Loopした回数をカウントしたい
Visual Basic(VBA)
-
16
Excel VBA、 別ブックの最終行セルへのコピー&値ペースト
Visual Basic(VBA)
-
17
エクセルVBAで手差しトレイを指定させたい。
Excel(エクセル)
-
18
VBA 値と一致した行の一部の列のデータを転記について教えてください
Visual Basic(VBA)
-
19
データ転記後の値のクリア
Excel(エクセル)
-
20
vba 2つの条件が一致したらコピーして別シートに値のみ貼り付け
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで長い行を5行ごとに1...
-
テキストデータのPDFをWordで開...
-
オブジェクトブラウザでデータ...
-
【エクセル】区切り文字が含ま...
-
エクセルで時間の合計ができません
-
エクセルの関数で範囲のある数...
-
SUMIFS関数の計算結果が違います
-
エクセル プルダウン(入力規...
-
使用しているエクセルデータか...
-
エクセルでプルダウン選択され...
-
差し込み印刷で文字列が「0」と...
-
一太郎の差し込み枠について
-
0:00をカウントしない方法
-
エクセルで日付表示になったも...
-
COUNTIFS関数で日付データを数...
-
EXCELシートに画像がさわれない。
-
DBで改行が入っているデータをE...
-
【Excel VBA】ユーザーフォームで選択...
-
Excel 条件付き書式で、別シー...
-
wordデータを、excelに自動で入...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで長い行を5行ごとに1...
-
テキストデータのPDFをWordで開...
-
【エクセル】区切り文字が含ま...
-
差し込み印刷で文字列が「0」と...
-
エクセルの関数で範囲のある数...
-
エクセルで時間の合計ができません
-
オブジェクトブラウザでデータ...
-
SUMIFS関数の計算結果が違います
-
膨大なデーターの変更点のみ抽...
-
斜めの貼り付け
-
エクセルでプルダウン選択され...
-
Excel 条件付き書式で、別シー...
-
マクロ 行挿入で数式も反映す...
-
DBで改行が入っているデータをE...
-
COUNTIFS関数で日付データを数...
-
【マクロ】転記ツール。転記先...
-
エクセルで「データ」の「区切...
-
エクセルのマクロで他のシステ...
-
エクセルにおいて、数値が入っ...
-
256列以上のデータを作成し、ワ...
おすすめ情報