このトピックに書きこむ |
---|
Re[4]: シートを順にスタッフの名前を検索したい | |
---|---|
[195551] Re[4]: シートを順にスタッフの名前を検索したい- ■ / 記事引用/メール受信=OFF■ □投稿者/ 赤毛 -(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のコードが含まれています。 緑の太文字→注釈 茶色の太文字→条件分岐 赤の太文字→ループ 青の太文字→その他 |
[195550] Re[3]: シートを順にスタッフの名前を検索したい- ■記事引用/メール受信=OFF■ □投稿者/ マナ -(2023/01/25(22:19)) □U R L/ 元コードでは、こうしていますが… > Sheets(sc).Activate |
[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のコードが含まれています。 緑の太文字→注釈 茶色の太文字→条件分岐 赤の太文字→ループ 青の太文字→その他 |
[195539] Re[1]: シートを順にスタッフの名前を検索したい- ■記事引用/メール受信=OFF■ □投稿者/ マナ -(2023/01/25(08:10)) □U R L/ Worksheetfunction.countifで個数をカウントしてはどうでしょうか。 |
[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のコードが含まれています。 緑の太文字→注釈 茶色の太文字→条件分岐 赤の太文字→ループ 青の太文字→その他 |