| シートを順にスタッフの名前を検索したい | |
|---|---|
[195538] シートを順にスタッフの名前を検索したい- ■親トピック/記事引用/メール受信=OFF■ □投稿者/ 赤毛 -(2023/01/24(23:51)) □U R L/ 初めまして。
最終シートにスタッフ名をA列に書いてあり
上から順にシート1から最終シート前まで
そのスタッフ名を検索し個数を出したいのですが
あるシートにそのスタッフ名がなかった時に
何もせず次のシートに進みたいのですが
そこがうまくいきません。
そのコードの書き方を教えていただきたくお願いします。
初心者のため見苦しいコードですが、よろしくお願いします。
Sub 人件費()
Dim sc As Integer 'シフトシート数
Dim stuff As Variant 'スタッフ名
Dim c As Variant 'シフトの入ってる色
Dim i As Integer 'スタッフ名のある行
Dim r As Range 'スタッフの入ってるセル
Sheets("人件費").Activate ’最終シート
For i = 4 To Cells(Rows.Count, 1).End(xlUp).Row
stuff = Cells(i, 1).Text
For sc = 1 To Sheets.Count - 1
Sheets(sc).Activate
Set myRange = Range("C4:AS45")
Dim rng As Range
Dim adr As String ' 最初に見つかったセルのAddress
Dim n As Long ' 見つかったセルの個数
n = 0
Set rng = Cells.Find(stuff)
n = 1
adr = rng.Address
Do
Set rng = Cells.FindNext(After:=rng)
If rng.Address = adr Then
Exit Do
Else
n = n + 1
End If
Loop
MsgBox n & "個見つかりました。"
Next
Next
End Sub
この記事にはVBAのコードが含まれています。 緑の太文字→注釈 茶色の太文字→条件分岐 赤の太文字→ループ 青の太文字→その他 | |
[195539] Re[1]: シートを順にスタッフの名前を検索したい- ■記事引用/メール受信=OFF■ □投稿者/ マナ -(2023/01/25(08:10)) □U R L/ Worksheetfunction.countifで個数をカウントしてはどうでしょうか。 | |
[195548] Re[2]: シートを順にスタッフの名前を検索したい- ■記事引用/メール受信=OFF■ □投稿者/ 赤毛 -(2023/01/25(21:32)) □U R L/ マナさん
お返事ありがとうございます。
Worksheetfunction.countifを使って下記のように作ってみましたが
カウントされませんでした。
どこがいけないでしょうか?
よろしくお願いします。
Sub 人件費()
Dim sc As Integer 'シフトシート数
Dim stuff As Variant 'シート「人件費」のスタッフ名
Dim i As Integer 'シート「人件費」のスタッフ名のある行
Dim col As Integer 'シート「人件費」の列 1週毎に集計
Dim aaa As Integer 'countした数
Sheets("人件費").Activate
For i = 4 To Cells(Rows.Count, 1).End(xlUp).Row
stuff = Cells(i, 1).Text
col = 6
For sc = 1 To Sheets.Count - 1
If WorksheetFunction.CountIf(Range("C4:AS45"), stuff) > 0 Then
aaa = WorksheetFunction.CountIf(Range("C4:AS45"), stuff)
Sheets("人件費").Activate
Cells(i, col) = aaa
End If
col = col + 1
Next
Next
End Sub
この記事にはVBAのコードが含まれています。 緑の太文字→注釈 茶色の太文字→条件分岐 赤の太文字→ループ 青の太文字→その他 | |
[195550] Re[3]: シートを順にスタッフの名前を検索したい- ■記事引用/メール受信=OFF■ □投稿者/ マナ -(2023/01/25(22:19)) □U R L/ 元コードでは、こうしていますが… > Sheets(sc).Activate | |
[195551] Re[4]: シートを順にスタッフの名前を検索したい- ■ □投稿者/ 赤毛 -(2023/01/26(00:15)) □U R L/ マナさんの教えを元に作成した下記のコードで
無事に出来上がりました。
本当にありがとうございました。
Sub 人件費()
Dim sc As Integer 'シフトシート数
Dim stuff As Variant 'シート「人件費」のスタッフ名
Dim i As Integer 'シート「人件費」のスタッフ名のある行
Dim col As Integer 'シート「人件費」の列 1週毎に集計
Dim aaa As Integer 'countした数
Sheets("人件費").Activate
For i = 4 To Cells(Rows.Count, 1).End(xlUp).Row
col = 6
stuff = Cells(i, 1).Text
For sc = 1 To Sheets.Count - 1
Sheets(sc).Activate
If WorksheetFunction.CountIf(Range("C4:AS45"), stuff) > 0 Then
aaa = WorksheetFunction.CountIf(Range("C4:AS45"), stuff)
Sheets("人件費").Activate
Cells(i, col) = aaa
End If
col = col + 1
Next
Sheets("人件費").Activate
Next
End Sub
この記事にはVBAのコードが含まれています。 緑の太文字→注釈 茶色の太文字→条件分岐 赤の太文字→ループ 青の太文字→その他 | |
| このトピックに書きこむ |
|---|