アプリ版:「スタンプのみでお礼する」機能のリリースについて

Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。

エクセル ブック名 あああ
これは マクロファイルです

ブック名 あああ
シート名 ししし
シート名 すすす
シート名 せせせ
シート名 そそそ

これらのシート名は左から右方向に並んでいます
ししし すすす せせせ そそそ

シート名 ししし の構成は
1行目が様々な見出しで ぎっしり。
見出し名が必要なら、
A1は あ
B1は い
C1は う 以下同様。
ただし
セルJ1  担当名
セルAN1 支店名

タテの方向にはA列からAL列まで データが、びっしりあります。

最終行は 未定で、経験的には2万から4万行で 作業の度に異なるため 不安定です


シート名 そそそ の構成
セルA1 担当名
セルB1 いいい
セルC1 支店名
行は50行固定です

VBA内容
データ満載の シート名 ししし ごと 同じブックの新規シートへコピーし、シート名をシシシ。
そのシート上で VBA を適用しVLOOKUP 関数を 担当名 ごとに 支店名を最終行まで割り当てたいです

A 回答 (3件)

#1の回答者です


>最終行まで、Vlookup関数を貼り付けたいです。
Vlookup関数の引数のJ列最終行を
jLastRow = .Cells(Rows.Count, "J").End(xlUp).Row
で取得して
.Range("AN2:AN" & jLastRow).Formula = 数式
AN2から引数最終行までの範囲に数式を入力しています
対象範囲はExcel任せ

>データ満載の シート名 ししし ごと
なので わざわざ新規シートを作り内容をコピペする必要はなく
シートのコピーを挿入すれば良いです
Sheets("ししし").Copy After:=Sheets(Sheets.Count)

#1のコードをプロシージャ内にコピペして試してください
(注意:すでに シシシ名のシートがあるとエラーになります)

sub test ()
’ここにコピペして試してください
end sub
    • good
    • 0
この回答へのお礼

なるほどです。
ありがとうございます

お礼日時:2023/05/11 19:10

Sub CopyDataAndApplyVLOOKUP()


Dim wsSource As Worksheet
Dim wsDestination As Worksheet
Dim lastRow As Long

' ブック名「あああ」の「ししし」シートを取得
Set wsSource = ThisWorkbook.Worksheets("ししし")

' 新しいシートを作成し、シート名を「シシシ」とする
Set wsDestination = ThisWorkbook.Sheets.Add(After:=Worksheets(Worksheets.Count))
wsDestination.Name = "シシシ"

' シート「ししし」からデータをコピー
wsSource.UsedRange.Copy Destination:=wsDestination.Range("A1")

' 最終行を取得
lastRow = wsDestination.Cells(wsDestination.Rows.Count, "J").End(xlUp).Row

' VLOOKUP関数を適用
wsDestination.Range("AN2:AN" & lastRow).Formula = "=VLOOKUP($J2, $A$2:$C$" & lastRow & ", 3, FALSE)"

' 結果の値を保持
wsDestination.Range("AN2:AN" & lastRow).Value = wsDestination.Range("AN2:AN" & lastRow).Value

' シート「そそそ」からデータをコピー
ThisWorkbook.Worksheets("そそそ").Range("B2:C51").Copy Destination:=wsDestination.Range("AP2:AQ51")
End Sub


このコードは、シート「ししし」のデータを「シシシ」という新しいシートにコピーし、VLOOKUP関数を使用して支店名を割り当てます。また、シート「そそそ」の特定の範囲もコピーしています。最終行を求める際には、セル「J」を基準にしていますが、必要に応じて変更してください。
    • good
    • 1
この回答へのお礼

ありがとうございます
初心者です

最終の行が毎回変わるため マクロを登録しようとしても VLOOKUP 関数を最後の行がどこで終わるかわからず マクロが使えないと思い
VBA でお尋ねしました
頂いた参考に作業します

ありがとうございます

お礼日時:2023/05/11 15:17

こんにちは 内容がなんとなくですが


こんな事をしたいのかな?と・・・
データ数が多いのであれば重くなるかもしれませんね

Sheets("ししし").Copy After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = "シシシ"
Dim jLastRow As Long
With Sheets("シシシ")
jLastRow = .Cells(Rows.Count, "J").End(xlUp).Row
.Range("AN2:AN" & jLastRow).Formula = "= VLOOKUP(J2,そそそ!A$2:C$50,3)"
End With
    • good
    • 1
この回答へのお礼

初心者です
最終行まで、Vlookup関数を貼り付けたいです。

お礼日時:2023/05/11 15:14

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています