• ベストアンサー

エクセルのマクロ初心者です

http://okwave.jp/qa/q5955520.html こちらの回答は僕が探しているシフト表から抽出するための方法なのですが、 マクロ機能をまだ理解していないため、マクロを反映させるまでの方法を教えて頂きたいです。 もしよろしければお願いします。 このページですと出勤は○で表示されていますが、自分が作成しているのは、出勤時間(PM6時出勤なら18)という感じなので、また少し設定が変わるとは思います。    1日 山田16 井上 佐藤18 という感じで数字が書いてある作業員を抽出する感じになります。 もしよろしければ教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

’コレはシフト表(Sheet1)に登録するマクロ ’Sheet1の名前を右クリック、「コードを表示」を選択し、出てきたソースエディタ(VBE)で登録する。 ’アトは、Sheet1の行1の列1(A列)以外を左クリックすれば、Sheet2に結果が出る。 ’シフト表が小さければ、あえてSheet2を使うまでもなく、結果は、Sheet1の空いているところに出した方が使い勝手は断然良くなる。 ’横に長い表というのも使い勝手は悪い。1ヶ月単位で、人数が少なければ、日付は縦方向にした方が断然使い易くなる。 Option Explicit Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim xSheet As Worksheet Dim xLast As Long Dim mm As Long Dim nn As Integer If (Target.Row = 1) And (Target.Column <> 1) Then Set xSheet = Sheets("Sheet2") xSheet.UsedRange.Clear xSheet.Cells(1, "A") = "出勤者" xSheet.Cells(1, "B").Value = Cells(1, Target.Column).Value mm = 1 xLast = Cells(Rows.Count, "A").End(xlUp).Row For nn = 2 To xLast If Cells(nn, Target.Column).Value <> "" Then mm = mm + 1 xSheet.Cells(mm, "A").Value = Cells(nn, "A").Value xSheet.Cells(mm, "B").Value = Cells(nn, Target.Column).Value End If Next End If xSheet.select xSheet.columns("A:B").autofit End Sub

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • masatsan
  • ベストアンサー率15% (179/1159)
回答No.1

参考リンクで セルなどの修正は当然として If Cells(i, Target.Column).Value = "○" Then を if ... <>"" ... にする。

すると、全ての回答が全文表示されます。

関連するQ&A