昨日からVBAを始めた初心者です。
どなたか助けて頂けないでしょうか…。
sheet1からsheet5まであるExcelです。
バージョンは2021
sheet1に集計シートを作っています。
sheet1のC2からC149まで社員番号があり
sheet2からsheet5はA2からA41まで
それぞれ社員番号があります。
やりたいことは
sheet2からsheet5の社員番号が
sheet1の社員番号に一致したら
sheet2からsheet5のE.F.G.H.I.J列を
E.G.I.F.H.J列の順でコピーし
sheet1の一致した社員番号のE.F.G.H.I.J列に貼り付けたいです。
更にsheet2からsheet5のD列を
sheet1のM列に貼り付けたいです。
sheet1は
A1:M149の大きさ
sheet2からsheet5は
A1:J42の大きさ
セルの結合は無しです。
1行目に項目名がある感じで作っています。
文字だけでは伝わりにくいかもしれませんが
わかる方、よろしくお願い致します。
No.5ベストアンサー
- 回答日時:
No4です。
またまた間違えました。重ね重ね申し訳ありません。
番号は両シートともA列だと勝手に勘違いしていました。
(A列で比較しているので、一致するものが見つからなくて、何も転記されないものと思います。)
列の指定を変えれば良いだけなのですが、全文を改めて以下に。
Sub Q13755204()
Dim sh As Worksheet
Dim rng As Range, c As Range
Dim rw, m, n, v
With Worksheets("Sheet1")
Set rng = Range(.Cells(1, 3), .Cells(Rows.Count, 3).End(xlUp)).Offset(1)
rng.Offset(, 2).Resize(, 6).ClearContents
End With
For Each m In Array("Sheet2", "Sheet3", "Sheet4", "Sheet5")
Set sh = Worksheets(m)
For rw = 2 To sh.Cells(Rows.Count, 1).End(xlUp).Row
n = sh.Cells(rw, 1).Value
If n <> "" Then
Set c = rng.Find(What:=n, LookIn:=xlValues, LookAt:=xlWhole)
If Not c Is Nothing Then
v = sh.Cells(rw, 5).Resize(, 7).Value
v(1, 7) = v(1, 2)
v(1, 2) = v(1, 3)
v(1, 3) = v(1, 5)
v(1, 5) = v(1, 4)
v(1, 4) = v(1, 7)
c.Offset(, 2).Resize(, 6).Value = v
End If
End If
Next rw
Next m
End Sub
しっかり反映されました!
何度も何度もすみませんでした。
大変助かりました(T_T)
内容を理解して次回は自分で
頑張りたいと思います!
とても親切に対応頂き感謝しかありません。
ベストアンサーにさせて頂きます!
この度はありがとうございました。
No.3
- 回答日時:
こんにちは
不明点は勝手に解釈しました。
・Sheet1~Sheet5はシート番号ではなく、シート名と解釈
・最初にSheet1のE:J列をクリアしています。
したくない場合は、処理を外してください。
これにより、Sheet2~5に該当番号がない行は、E:J列が空白になります。
・各シートの最終行は、「A列に値がある最終行」として判断しています。
(142行、42行の固定にはしてありません)
・Sheet2~Sheet5の番号に重複がある場合には、出現順に上書きします。
・Sheet2~Sheet5の番号がSheet1に存在しない場合は何もしません。
・『>heet2からsheet5のD列をsheet1のM列に貼り付けたいです。』
に関しては、意味がわからなかったので対応していません。
以下、ご参考までに。
Sub Q13755204()
Dim sh As Worksheet
Dim rng As Range, c As Range
Dim rw, m, n, v
With Worksheets("Sheet1")
Set rng = Range(.Cells(1, 1), .Cells(Rows.Count, 1).End(xlUp)).Offset(1)
rng.Offset(, 4).Resize(, 6).ClearContents
End With
For Each n In Array("Sheet2", "Sheet3", "Sheet4", "Sheet5")
Set sh = Worksheets(m)
For rw = 2 To sh.Cells(Rows.Count, 1).End(xlUp).Row
n = sh.Cells(rw, 1).Value
If n <> "" Then
Set c = rng.Find(What:=n, LookIn:=xlValues, LookAt:=xlWhole)
If Not c Is Nothing Then
v = sh.Cells(rw, 5).Resize(, 7).Value
v(1, 7) = v(1, 2)
v(1, 2) = v(1, 3)
v(1, 3) = v(1, 5)
v(1, 5) = v(1, 4)
v(1, 4) = v(1, 7)
c.Offset(, 4).Resize(, 6).Value = v
End If
End If
Next rw
Next m
End Sub
こんにちは
返答ありがとうございます。
コードまで書いて頂いて
大変助かります…!
シート名の部分を実際のシート名に変更し
実行してみたところ
Nextで指定された変数の参照が不正です
と出ました…。
ちなみにWorksheets(m)とは
どのことを言っているのでしょう。
無知で申し訳ありません…
No.2
- 回答日時:
いきなり夢を砕いて申し訳ないですが、すでにVBAは旧態依然になっていて、今はVSTOを利用してC#やVB.NETを使うのが一般的になってます。
近いうちに廃止になるかもしれないので、VSTOで勉強し直すことをおすすめします。
https://qiita.com/NagaJun/items/c7c6964a12a8a945 …
返答ありがとうございます。
VSTOですか
初めて聞きました!
せっかく0スタートでいい機会なので
調べてみようと思います!
ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAを教えていただきたいです。 添付のような「data sheet」があります。 他に、「集計 s 2 2023/11/07 12:51
- Excel(エクセル) 関数を教えていただきたいです。 添付のような「data sheet」があります。 他に、「集計 sh 3 2023/11/02 17:11
- Excel(エクセル) SUMIFSと日付変換 10 2023/04/16 15:38
- Visual Basic(VBA) VBA 別sheetからの転記なのですが 2 2023/05/22 15:55
- Visual Basic(VBA) VBAでvlookup関数から、別シート参照するやり方・・・ 2 2022/11/14 18:49
- Excel(エクセル) Excelにて、行の最後のセルの値をコピーして別sheetに張りつけるVBAコードをご教授願います 3 2022/11/20 14:35
- Excel(エクセル) エクセルで約600のSheetから「クロス集計」が可能ですか? 4 2024/01/05 11:13
- その他(プログラミング・Web制作) python文字化けエラーが発生しているようです 3 2022/04/13 19:41
- その他(Microsoft Office) 従業員増減対応で当番種類の増減対応な当番表 21 2022/07/19 07:30
- Visual Basic(VBA) 【変更】ファイルを閉じてダイアログで保存した時、更新したシートだけの処理の実行をする 5 2022/03/26 18:31
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・【選手権お題その3】この画像で一言【大喜利】
- ・【お題】逆襲の桃太郎
- ・自分独自の健康法はある?
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・ちょっと先の未来クイズ第6問
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
B列の最終行までA列をオート...
-
Worksheets メソッドは失敗しま...
-
複数の列の値を結合して別の列...
-
VBAのFind関数で結合セルを検索...
-
【VBA】2つのシートの値を比較...
-
vba 2つの条件が一致したら...
-
ExcelVBAでテキストルーレット...
-
VBAコンボボックスで選択した値...
-
空白セルをとばして転記
-
Cellsのかっこの中はどっちが行...
-
VBAの構文 3列置きにコピーし...
-
別シートから年齢別の件数をカ...
-
Excel整形処理:列ごと&12行お...
-
C# dataGridViewの値だけクリア
-
VBA 値と一致した行の一部の列...
-
VBA 何かしら文字が入っていたら
-
エクセルVBA intersect colu...
-
Excelで、あるセルの値に応じて...
-
基礎的な質問なのですが、Excel...
-
SpecialCells(xlCellTypeConsta...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
B列の最終行までA列をオート...
-
Worksheets メソッドは失敗しま...
-
Excelで、あるセルの値に応じて...
-
Cellsのかっこの中はどっちが行...
-
vba 2つの条件が一致したら...
-
IIF関数の使い方
-
VBAのFind関数で結合セルを検索...
-
URLのリンク切れをマクロを使っ...
-
データグリッドビューの一番最...
-
文字列の結合を空白行まで実行
-
rowsとcolsの意味
-
VBAを使って検索したセルをコピ...
-
VBA 何かしら文字が入っていたら
-
Changeイベントでの複数セルの...
-
【Excel VBA】 B列に特定の文字...
-
【VBA】2つのシートの値を比較...
-
【Excel VBA】カンマと改行コー...
-
VBAで、離れた複数の列に対して...
-
VBAでのリスト不一致抽出について
-
エクセル 2つの表の並べ替え
おすすめ情報
こんにちは。
すみません…( .. )
今朝出社して確認したら
エラーもなく、動作したのですが
数値が出てこなかったです…
どこが反映しない原因なのでしょうか?
教えて頂けたら助かります…。
写真を貼りたくても何分経っても貼れないので
文字で失礼します。
休暇残リストALLという集計シート
C列が社員番号
E列が初期有給
F列が使用有給
G列が有給残
H列が累計代休
I列が使用代休
J列が代休残
休暇残リスト-1.-2.-3.-4の4シート
A列が社員番号
E列が初期有給
G列が使用有給
I列が有給残
F列が累計代休
H列が使用代休
J列が代休残
それぞれ2行目から数字が入っています。
よろしくお願いします。