下記のマクロをご覧ください。動きます
質問は、添付画像、右下のようにオートフィルターがかかっている状態にて
マクロを実行すると
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も見ています
-
「環境が人を育てる」って本当?環境によって人格や生き方は本当に変わるのか
環境が人生に与える影響は実際どれほどのものなのか、専門家の田宮由美さんに伺った。
-
【マクロ】book1からbook2への適切な転記が出来ない件
Excel(エクセル)
-
データから単位文字を除去して計算する方法は?
Excel(エクセル)
-
Googleシート「A1」でなくて「A001」にしたいのですが
Excel(エクセル)
-
-
4
【マクロ】for nextステートメントがわかりません。例あり。
Excel(エクセル)
-
5
エクセルの数式で教えてください。
Excel(エクセル)
-
6
エクセルの行を巾を変えずに増やす方法
Excel(エクセル)
-
7
エクセルの関数でわからないことあるのでコード付きで教えてください
Excel(エクセル)
-
8
エクセルで⑤番の操作が分かりません。どういう関数が良いんですか?
Excel(エクセル)
-
9
同じ型【ハイフンと数字】だけ抜き出す関数について
Excel(エクセル)
-
10
VBA(えくせる)ってなんでメンテできない人が多いんですか?
Excel(エクセル)
-
11
同じ型【ハイフンと数字】をぶつけて、イコールである事を証明する関数はありますか?
Excel(エクセル)
-
12
ある値に対して3番目に大きな値を、なければ2番目に大きな値、それもなければ1番大きな値を表示させたい
Excel(エクセル)
-
13
エクセルで有効桁数を確認する方法
Excel(エクセル)
-
14
エクセルのハイパーリンクで質問です。
Excel(エクセル)
-
15
ExcelのVBAコードを教えて頂けますでしょうか。 例シート2つがあります。 シート1は元データ
Excel(エクセル)
-
16
Excel VBAについて【図形を組み合わせて作成した、料金別納表示の削除の仕方】
Excel(エクセル)
-
17
excl2013 縦の表を横にVBAでする方法
Excel(エクセル)
-
18
エクセルのcountifのワイルドカードについて
Excel(エクセル)
-
19
DBCS関数とは何ぞやッ!
Excel(エクセル)
-
20
Excelのマクロファイルを開くと下記のエラーがでます。
Excel(エクセル)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで長い行を5行ごとに1...
-
【エクセル】区切り文字が含ま...
-
DBで改行が入っているデータをE...
-
テキストデータのPDFをWordで開...
-
エクセルの関数で範囲のある数...
-
差し込み印刷で文字列が「0」と...
-
wordデータを、excelに自動で入...
-
エクセルのマクロで他のシステ...
-
オブジェクトブラウザでデータ...
-
COUNTIFS関数で日付データを数...
-
斜めの貼り付け
-
マクロ 行挿入で数式も反映す...
-
使用しているエクセルデータか...
-
エクセルでプルダウン選択され...
-
エクセルで「データ」の「区切...
-
SUMIFS関数の計算結果が違います
-
【マクロ】転記ツール。転記先...
-
0:00をカウントしない方法
-
【Excel VBA】ユーザーフォームで選択...
-
EXCEL2010 関数が勝手に変わる
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで長い行を5行ごとに1...
-
【エクセル】区切り文字が含ま...
-
エクセルの関数で範囲のある数...
-
SUMIFS関数の計算結果が違います
-
差し込み印刷で文字列が「0」と...
-
COUNTIFS関数で日付データを数...
-
エクセルで時間の合計ができません
-
テキストデータのPDFをWordで開...
-
オブジェクトブラウザでデータ...
-
エクセルで列にあるユニークな...
-
膨大なデーターの変更点のみ抽...
-
エクセルでプルダウン選択され...
-
DBで改行が入っているデータをE...
-
0:00をカウントしない方法
-
スプレッドシート関数、右端の...
-
斜めの貼り付け
-
エクセル 貼り付け時の文字化け
-
エクセルのマクロで他のシステ...
-
使用しているエクセルデータか...
-
エクセルにおいて、数値が入っ...
おすすめ情報