これはよくある質問だと思っていましたが、私は検索して答えを見つけることができませんでした。Excel VBA今日の作業者のスケジュールから名前を集める
私は仕事のスケジュールがあり、今日の日付を検索し、今日仕事を予定している人の名前をすべて返したいと思います。私は動作するコードを作成しましたが、完了するまでに時間がかかり、実行するたびに100%有効ではありません。私はこれを行うためのより速く、より速い方法がなければならないと確信していますが、私はまだそれを見つけることができませんでした。私はそれを2つの異なるコードに分解しています。最初の人は今日の日付がある列を見つけ、2番目の人は名前を集めて次のシートに配置します。
Sub GetDateRow_()
'//////Finds the row that has today's date and returns the value of that row to cell C34\\\\\\
Dim SearchMe As Integer
SearchMe = Sheets("Sheet1").Range("C33")
Set FindMe = Sheets("Sheet1").Range("C5:AD5").Find(What:=SearchMe, LookIn:=xlValues, LookAt:= _
xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False)
Sheets("Sheet1").Range("C34").Value = Cells(1, FindMe.Column)
End Sub
及び第2サブ:
Sub CopyScheduledToList()
'//////Searches Today's day Column from the schedule given by GetDateRow Sub & assimbles \\\\\\\
'////// the names of those who are scheduled to work today to a list on Page 2 \\\\\\\
Dim Ccount As Integer
Dim lngLoop As Long
Dim RowCount As Integer
Dim dShift As String
Dim cShift As String
Ccount = 1
dShift = "A63"
cShift = "TLA"
RowCount = Sheets("Sheet1").Range("C34").Value
lngLoop = 1
For lngLoop = 1 To Rows.count
If Cells(lngLoop, RowCount).Value = cShift Then Worksheets("Sheet2").Cells(1, 4).Value = Worksheets("Sheet1").Cells(lngLoop, 1).Value
'////// Get's the Team Leader and places name into column D on Page 2
If Cells(lngLoop, RowCount).Value = dShift Then Worksheets("Sheet2").Cells(Ccount, 1).Value = Worksheets("Sheet1").Cells(lngLoop, 1).Value
If Worksheets("Sheet2").Range("A" & Ccount).Value <> "" Then Ccount = Ccount + 1
'////// Places the name from the working list onto page 2 and adds a count so the next value found
'////// will go to the next empty row on Sheet 2
Next lngLoop
End Sub
が再び、あなたの助けを大幅に高く評価され
は、ここで第一副です!
は(私はあなたの行カウンタと列カウンタを混同) - それは言っている必要があります...それはとても長い時間がかかる理由は、あなたが '1から100万人以上の細胞あなたのループを処理しているということです行に。カウントする。最低でも、For lngLoop = 1 To Rows.countをlngLoop = 1 To Sheets( "Sheet1")に変更してください。行 ' – YowE3K
ありがとうYowE3K!それははるかに速くなりました!しかし、それはまだ時間の100%動作していない。 sheet2をクリアするか、またはsheet2でフィールドを選択しても、それは機能しません。 –
これは、おそらく、非正規化された 'Cells'リファレンス(参照しているシートを指定していないもの)によるものです。私はあなたのためにその問題を回避する答えを書こうとします。 – YowE3K