昨日から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.2
- 回答日時:
いきなり夢を砕いて申し訳ないですが、すでにVBAは旧態依然になっていて、今はVSTOを利用してC#やVB.NETを使うのが一般的になってます。
近いうちに廃止になるかもしれないので、VSTOで勉強し直すことをおすすめします。
https://qiita.com/NagaJun/items/c7c6964a12a8a945 …
返答ありがとうございます。
VSTOですか
初めて聞きました!
せっかく0スタートでいい機会なので
調べてみようと思います!
ありがとうございます。
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.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)
内容を理解して次回は自分で
頑張りたいと思います!
とても親切に対応頂き感謝しかありません。
ベストアンサーにさせて頂きます!
この度はありがとうございました。
お探しの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を見た人はこんなQ&Aも見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
VBAコードについて
Visual Basic(VBA)
-
VBのWPFとはなんでしょうか?
Visual Basic(VBA)
-
以下のコードを実行しても、オブジェクト変数または、withブロック変数が設定されていませんとエラーが
Visual Basic(VBA)
-
-
4
Excel-VBAのmsgBox()の不思議
Visual Basic(VBA)
-
5
ExcelVBAのFindFirstエラーについて
Visual Basic(VBA)
-
6
VBA 別ブックからコピペしたいのですが、軽くしたいです
Visual Basic(VBA)
-
7
エクセルVBAの配列について
Visual Basic(VBA)
-
8
FileCopy時のエラー
Visual Basic(VBA)
-
9
ExcelのVBAのことで質問です。 以下のコードを入れ、ボタンを押せば作動させると写真のように画面
Visual Basic(VBA)
-
10
ファイル名の日付について教えて頂けますかExcel
Visual Basic(VBA)
-
11
Cellsのコードが打てません
Visual Basic(VBA)
-
12
VBAコードが作動しません。修正したいのですが何処に原因かあるか教えて下さい。
Visual Basic(VBA)
-
13
コードを直していただきたいです。 以下のコードはネットで拾ったものをほんの少しいじった物なのですが、
Visual Basic(VBA)
-
14
VBAの質問です、複数のテキストボックスに同じコメントを
Visual Basic(VBA)
-
15
引数に数値、文字列の混在
Visual Basic(VBA)
-
16
近似した文字列を置換するエクセル関数またはVBAについて
Visual Basic(VBA)
-
17
HTML入門でもう躓いてしまった。
HTML・CSS
-
18
Excel 大なり小なりを表すとき、 例えば「10以上」なら、>=10 と表せますが、 この10の部
Excel(エクセル)
-
19
配列のペースト出力結果の書式について
Visual Basic(VBA)
-
20
エクセルvbaについて
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Worksheets メソッドは失敗しま...
-
vba 2つの条件が一致したら...
-
Cellsのかっこの中はどっちが行...
-
【VBA】2つのシートの値を比較...
-
データグリッドビューの一番最...
-
Excelで、あるセルの値に応じて...
-
マクロ 最終列をコピーして最終...
-
DataGridViewに空白がある場合...
-
VBAで、特定の文字より後を削除...
-
rowsとcolsの意味
-
B列の最終行までA列をオート...
-
VBAを使って検索したセルをコピ...
-
VBAで、離れた複数の列に対して...
-
マクロ 関数を使った抽出でエラ...
-
IIF関数の使い方
-
VBAで重複データを確認したい
-
Changeイベントでの複数セルの...
-
VBAのFind関数で結合セルを検索...
-
エクセル アクティブセルから...
-
文字列の結合を空白行まで実行
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Worksheets メソッドは失敗しま...
-
Excelで、あるセルの値に応じて...
-
B列の最終行までA列をオート...
-
vba 2つの条件が一致したら...
-
Cellsのかっこの中はどっちが行...
-
VBAを使って検索したセルをコピ...
-
VBAのFind関数で結合セルを検索...
-
文字列の結合を空白行まで実行
-
IIF関数の使い方
-
【VBA】2つのシートの値を比較...
-
マクロ 最終列をコピーして最終...
-
Changeイベントでの複数セルの...
-
VBA 何かしら文字が入っていたら
-
URLのリンク切れをマクロを使っ...
-
エクセルVBAにて =A1=B1とすれ...
-
VBAでのリスト不一致抽出について
-
データグリッドビューの一番最...
-
マクロについて。S列の途中から...
-
VBA UserFormからの転記で
-
targetをA列のセルに限定するに...
おすすめ情報
こんにちは。
すみません…( .. )
今朝出社して確認したら
エラーもなく、動作したのですが
数値が出てこなかったです…
どこが反映しない原因なのでしょうか?
教えて頂けたら助かります…。
写真を貼りたくても何分経っても貼れないので
文字で失礼します。
休暇残リストALLという集計シート
C列が社員番号
E列が初期有給
F列が使用有給
G列が有給残
H列が累計代休
I列が使用代休
J列が代休残
休暇残リスト-1.-2.-3.-4の4シート
A列が社員番号
E列が初期有給
G列が使用有給
I列が有給残
F列が累計代休
H列が使用代休
J列が代休残
それぞれ2行目から数字が入っています。
よろしくお願いします。