
はじめまして、下記のように、Excelでマクロを組みたいのですが
組み方がわかりません。
ご教授願えませんでしょうか。
MS Ofiice2010 生徒数500名ほど
シート1には生徒の生徒番号、氏名などがあります。
A B C D
1 生徒番号 氏名 備考
2 120001 田中
3 120002 山田 試験時休み
4 T120009 相田 転入
シート2には生徒の成績表:生徒番号、氏名、国語、算数、理科、社会
生徒番号でソートされていません。
A B C D E F
1 生徒番号 氏名 国語 算数 理科 社会
2 120001 田中 80 65 65 75
3 T120009 相田 90 85 80 80
シート1の生徒番号でシート2生徒番号を検索して、該当したら成績を
シート1の検索した生徒番号のD列以降にコピーしたいのですが
A B C D E F G
1 生徒番号 氏名 備考 国語 算数 理科 社会
2 120001 田中 80 65 65 75
3 120002 山田 試験時休み
4
5
10 T120009 相田 転入 90 85 80 80
お手数ですが、ご教授願えますでしょうか。
よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
こんばんは!
関数ではダメですか?
Sheet1のD2セルに
=IF(COUNTIF(Sheet2!$A:$A,$A2),VLOOKUP($A2,Sheet2!$A:$F,COLUMN(C1),0),"")
という数式を入れオートフィルで列方向・行方向にコピー!
これで大丈夫だと思いますが・・・
※ どうしてもVBAでやりたい場合は、一例です。
Alt+F11キー → メニュー → 挿入 → 「標準モジュール」を選択 → VBE画面に
↓のコードをコピー&ペーストしてマクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)
Sub Sample1() 'この行から
Dim i As Long, n As Long, c As Range, wS1 As Worksheet, wS2 As Worksheet
Set wS1 = Worksheets("Sheet1")
Set wS2 = Worksheets("Sheet2")
For i = 2 To wS1.Cells(Rows.Count, 1).End(xlUp).Row
Set c = wS2.Columns(1).Find(what:=wS1.Cells(i, 1), LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
n = c.Row
wS2.Cells(n, 3).Resize(1, 4).Copy wS1.Cells(i, 4)
End If
Next i
End Sub 'この行まで
こんな感じではどうでしょうか?m(_ _)m
No.5
- 回答日時:
「教授する」などと言う程の大それた内容では決してないのですが、
せめて「教示」にくらいはなるかと思いますので、数点を。
参考)http://blogs.wankuma.com/jeanne/archive/2005/11/ …
> Excelでマクロを組みたいのですが組み方がわかりません。
質問の主文はコレですね。
Alt+F11 でVBEが起動しますので、
やりたいこと(質問文中の処理)をコードに落として書いていけば組めます。
「EXCEL マクロ」で検索すると、
この辺りを解説したサイトがジャンジャン見つかります。
「やり忘れていた冬休みの宿題」と思って、勉強なさるとよろしいのでは?と思います。
子供たちは今日あたり必死になっていることでしょうしね。
ま、「この程度」で良ければ、VLOOKUP関数で十分です。
例えば、田中くんの国語(シート1のD2セル)には
=VLOOKUP(A2,シート2!$A:$F,3,FALSE)
田中くんの算数(シート1のE2セル)には
=VLOOKUP(A2,シート2!$A:$F,4,FALSE)
理科社会も同様に作って、下までコピーしてやると出来上がり。
シート2に該当生徒番号が無かったらエラーを返すので、
その考慮はIF関数でも使えばOKです。
どうしてもマクロを使いたい・・
と言うか、「マクロで作れ」とおっしゃるのであれば
Sub Test()
On Error Resume Next
Sheets("シート1").Activate
For i = 2 To Sheets("シート1").Cells(Rows.Count, 1).End(xlUp).Row
For j = 1 To 4
Cells(j + 3, i) = WorksheetFunction.VLookup(Cells(1, i), Sheets("シート2").Range("A1").CurrentRegion, j + 2, False)
Next
Next
End Sub
こんな感じで提示しておきます。
ここから発展させるのも然程難しくはありません。
どちらにしても、VLOOKUP関数が便利ですよ。
解説は、みなさんが親切に教示くださっている通りです。
No.4
- 回答日時:
確認したいのですが、御質問文中のコピー後の例において、A4:C5の範囲が空欄となっていますが、これは、元々その範囲内には何も入力されていなかっただけであり、
「Sheet2に存在しない行のデータは消去しなければならない」という訳ではないと考えても宜しいのでしょうか?
もし、そうであるのならば、次の様なマクロは如何でしょうか?
Sub Macro ()
Dim lr As Long
lr = Application.WorksheetFunction.Match("*?", Sheets("Sheet1").Columns("B:B"), -1)
Sheets.Add After:=Sheets(Sheets.Count)
With Sheets("Sheet1").Range("D1:G" & lr)
.FormulaR1C1 = _
"=IF(ISERROR(1/(VLOOKUP(RC1,Sheet2!C1:C6,COLUMNS(Sheet2!C1:C[-1]),FALSE)<>"""")),"""",VLOOKUP(RC1,Sheet2!C1:C6,COLUMNS(Sheet2!C1:C[-1]),FALSE))"
.Value = .Value
End With
End Sub
No.3
- 回答日時:
ちなみにまぁ私もわざわざマクロとか使わずとも、ふつーに関数だけでやっつけた方が遥かに簡単だと思います。
ただしご相談では説明が不十分ですが、「0点を取った」のと「一部科目を休んだので点数が記入されていない」のでは全然意味が違いますので、
シート1のD2:
=IFERROR(IF(VLOOKUP($A2,Sheet2!$A:$F,COLUMN(C2),FALSE)="","",VLOOKUP($A2,Sheet2!$A:$F,COLUMN(C2),FALSE)),"")
右にコピー、下にコピー
のように細かく計算してやる必要があります。
#逆に
例えば数学の試験の日に休んだので点数が無いのを単に0点としてしまっているのなら
=IFERROR(VLOOKUP($A2,Sheet2!$A:$F,COLUMN(C2),FALSE),"")
だけでいいです。
No.2
- 回答日時:
データタブの統合という機能で寄せ集めさせる事ができますが、敢えてマクロでやりたいなら
sub macro1()
worksheets("Sheet1").select
range("D:G").clearcontents
range("A:A").copy range("D1")
range("D:D").consolidate sources:="Sheet2!C1:C6", function:=xlsum, toprow:=true, leftcolumn:=true, createlinks:=false
range("D:E").delete shift:=xlshifttoleft
end sub
といった具合になります。
マクロを参考に(=マクロでやらせている通りに手を動かして)、統合の機能も手で操作して練習してみて下さい。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
-
大麻の使用罪がなかった理由や法改正での変更点、他国との違いを弁護士が解説
ドイツで2024年4月に大麻が合法化され、その2ヶ月後にサッカーEURO2024が行われた。その際、ドイツ警察は大会運営における治安維持の一つの方針として「アルコールを飲んでいるグループと、大麻を吸っているグループ...
-
ピンとくる人とこない人の違いは?直感を鍛える方法を心理コンサルタントに聞いた!
根拠はないがなんとなくそう感じる……。そんな「直感がした」という経験がある人は少なくないだろう。ただ直感は目には見えず、具体的な説明が難しいこともあるため、その正体は理解しにくい。「教えて!goo」にも「...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【マクロ】毎回、ファイル名が...
-
シートをコピーして シートに...
-
エクセルのマクロ設定について...
-
Excel マクロ 他ブックのシート...
-
エクセルの複数シートの保護を...
-
前の(左隣の)シートを連続参...
-
エクセルで前シートを参照して...
-
Accessのスプレッドシートエク...
-
複数シートの特定の位置に連番...
-
エクセル 計算式も入っていない...
-
Excel2007で、太字にした行のみ...
-
別シートの最終行に貼り付けす...
-
エクセルで毎回1枚目のシートを...
-
EXCEL:同じセルへどんどん足し...
-
エクセルで前のシートを連続参...
-
Excel、同じフォルダ内のExcel...
-
【Excel マクロ】 同一book内で...
-
EXCELで同一フォーマットのシー...
-
Excel シートに画像が貼ってあ...
-
エクセルVBAでパスの¥マークに...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【マクロ】毎回、ファイル名が...
-
シートをコピーして シートに...
-
エクセルのマクロで指定条件一...
-
Excel マクロ 他ブックのシート...
-
Excelでシート名と最終更新日を...
-
Excel VBA 検索して該当行を抽出
-
エクセルのマクロ設定について...
-
Excel で選択しているセルの行...
-
エクセルの複数シートの保護を...
-
前の(左隣の)シートを連続参...
-
別シート参照のセルをシート毎...
-
エクセルでファイルを開いたと...
-
特定のシートの削除を禁止した...
-
Excelで金銭出納帳。繰越残高を...
-
エクセルで前シートを参照して...
-
エクセル 計算式も入っていない...
-
EXCEL:同じセルへどんどん足し...
-
Excel、同じフォルダ内のExcel...
-
Excel2007で、太字にした行のみ...
-
複数シートの特定の位置に連番...
おすすめ情報