エクセルVBAについて質問です。
エクセルのバージョンは2003と2007を主に使用しています。
下記の様なデータがあるときに、部活が「野球」でかつクラブは「囲碁」に入っている生徒の学籍番号を別のシート(Sheet2)のB3から下に順にリスト化するマクロがどうしても出来なくて困っています。
find next等を使うのでは無いかと色々してみましたが上手く出来ない現状です。
<sheet1>
A B C D E
1 学籍番号 学年 名前 部活 クラブ
2 2222222 1 山田 太郎 野球 囲碁
3 9854923 2 吉田 次郎 剣道 絵画
4 1111111 3 佐藤 三郎 野球 囲碁
5 8888883 1 米山 権蔵 卓球 囲碁
No.3ベストアンサー
- 回答日時:
こんばんは!
Sheet1のA列(学籍番号)のみをSheet2のB3セル以降に表示すれば良いわけですね?
一例です。
画面左下のSheet1のSheet見出し上で右クリック → コードの表示 → VBE画面に
↓のコードをコピー&ペーストしてマクロを実行してみてください。
Sub test()
Dim i, k As Long
Dim ws As Worksheet
Set ws = Worksheets(2)
k = 2
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
If Cells(i, 4) = "野球" And Cells(i, 5) = "囲碁" Then
k = k + 1
ws.Cells(k, 2) = Cells(i, 1)
End If
Next i
End Sub
こんな感じではどうでしょうか?m(_ _)m
有難うございます。
無事成功しました。こんなに早く、しかも短い構文で作れるとは…
まだまだ、勉強不足でした。
本当に有難うございました。
No.2
- 回答日時:
Sheet2のB2に学籍番号と入力されている事が前提です。
Sub Macro1()
Set ws01 = Worksheets("Sheet1")
Set ws02 = Worksheets("Sheet2")
If ws02.Range("B3") <> "" Then
ws02.Range("B3:B" & ws02.Cells(Rows.Count, 2).End(xlUp).Row).ClearContents
End If
For i = 2 To ws01.Cells(Rows.Count, 1).End(xlUp).Row
If ws01.Range("D" & i) = "野球" And ws01.Range("E" & i) = "囲碁" Then
ws02.Range("B" & ws02.Cells(Rows.Count, 2).End(xlUp).Offset(1).Row) = ws01.Range("A" & i)
End If
Next i
End Sub
No.1
- 回答日時:
今回質問された動作だとFind関数を使用しなくても実現できます。
以下にご質問された内容の動作をするソースコードを貼り付けたので試してみてください。
Sheet2のB3から下の順にリスト化されているはずです。
Public Sub test()
Dim strSerch1 As String
Dim strSerch2 As String
Dim lngLastRow As Long
Dim i As Long, j As Long
'検索する文字を以下の二つの変数に代入
strSerch1 = "野球"
strSerch2 = "囲碁"
'Sheet2にリスト化するための変数
'最初に入れるのが3行目なのでjに3を代入
j = 3
With Worksheets("Sheet1")
'.Cells(.Rows.Count, 1).End(xlUp).Rowで最後の行がどこなのか調べて
'lngLastRow変数に代入する。
'今回の場合は五行目が最後なので5が格納されます。
lngLastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
For i = lngLastRow To 2 Step -1
'ここで四列目と五列目を同時に比較して、両方とも同じならSheet2に学籍番号を入れる処理に移る。
If .Cells(i, 4).Value = strSerch1 And .Cells(i, 5).Value = strSerch2 Then
Worksheets("Sheet2").Cells(j, 2).Value = .Cells(i, 1).Value
j = j + 1
End If
Next i
End With
End Sub
1つ1つの工程が何を意味しているのか分かりやすく、他のことにも代用できそうです!
ありがとうございました!
さっそく試してみます!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語の問題です 2 2023/07/21 10:51
- 囲碁・将棋 囲碁野狐アプリは使えてる? 囲碁アプリ野狐を使われている方に質問です。 今、野狐アプリは使用できます 1 2022/05/05 19:28
- 中学校 中学校新2年生(4月から2年生)の男子です。部活動についての質問です。僕は、卓球部に入っています。一 2 2023/03/05 06:44
- 野球 高校野球の話 1 2022/08/18 09:54
- Excel(エクセル) エクセル 関数 指定の繰り返しの回数 以降(以前)を削除するには、 2 2022/04/24 10:29
- アニメ このおかたの今は!? 1 2022/11/25 07:14
- 囲碁・将棋 人間(プロの棋士の)の能力を凌駕してる、たとえば囲碁のAIは、将棋の能力がみられないのですか? 5 2023/08/13 15:59
- Excel(エクセル) Excelマクロ 差分抽出の方法が知りたいです。 2 2023/03/07 13:25
- 囲碁・将棋 9歳でプロ囲碁棋士って、99%は才能ですか? 努力は1%ぐらいか 4 2022/08/17 18:34
- iPhone(アイフォーン) iPhoneのapp storeで野狐囲碁が見つからない iPhone12のiOS15.4.1でap 2 2022/05/01 06:00
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
複数の条件に合う行番号を取得するには
その他(Microsoft Office)
-
vba 2つの条件が一致したらコピーして別シートに値のみ貼り付け
Visual Basic(VBA)
-
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
-
4
複数条件が一致で別シートに転記【エクセルVBA】
Excel(エクセル)
-
5
VBA 見つからなかった時の処理
Excel(エクセル)
-
6
VBAでユーザーフォームにセル値を表示させるには
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
おすすめ情報