ばくがの業務効率化チャンネル

このブログは個人的なエクセルの備忘録です

列の表示と非表示

Sub 非表示()

    Dim i As Long
    
    For i = 2 To 50
    
      If Cells(i, 3) = "非稼働" Then
      
          Rows(i).Hidden = True
    
      End If
    
    Next i


End Sub

 

Sub 表示()

    Dim i As Long
    
    For i = 2 To 50
    
      If Cells(i, 3) = "非稼働" Then
      
          Rows(i).Hidden = False
    
      End If
    
    Next i


End Sub

空白のセルの3個右となりのセルから転記

Sub 完全一致転記()

    'カウントアップ変数
    Dim i As Long
    
    '最終行取得用
    Dim 最終行 As Long
     
      '最終行はA列
      最終行 = Cells(Rows.Count, 1).End(xlUp).Row
        
            For i = 2 To 最終行
   
                    If Cells(i, 3) = "" Then

                         Cells(i, 3) = Cells(i, 7)

                    End If

            Next i
    
End Sub

各シートのA列の最終行の下に先月の月初を入力

Sub 対象月の記載()

'画面停止
Application.ScreenUpdating = False

  Dim i As Long
  
  Dim 先月 As String
  
  '先月の1日を取得
  先月 = DateSerial(Year(Date), Month(Date) - 1, 1)
  
  'すべてのシートに実行
  For i = 1 To Sheets.Count
   
    With Worksheets("マスタシート").Range("A2").CurrentRegion
       
         '1列目をシート名でフィルターをかける
        .AutoFilter Field:=1, Criteria1:=Sheets(i).Name
        
         '絞り込んだ行が1より大きい場合
         If WorksheetFunction.Subtotal(3, Range("A:A")) > 1 Then
          
           Sheets(i).Cells(Rows.Count, 2).End(xlUp).Offset(0, -1) = 先月

   Sheets(i).Cells(Rows.Count, 2).End(xlUp).Offset(0, -1).NumberFormatLocal = "yyyy""年""m""月"";@"

         End If
           
    End With
  
  Next i
 
  'オートフィルタの解除
  Worksheets("マスタシート").Range("A2").CurrentRegion.AutoFilter
  
'画面停止解除
Application.ScreenUpdating = True


End Sub