【不動産】物件台帳から空室一覧と空室期間を出し、長期空室を目立たせる

公開日:2026年10月5日 執筆:Takuya カテゴリ:業種別サンプル

賃貸物件の部屋ごとの台帳から、現在空室の部屋を抜き出し、空室になってからの日数を計算して、長期空室の部屋を目立たせた一覧を作るマクロです。

想定する場面

賃貸管理会社では、管理している物件のうち空室になっている部屋を把握し、募集条件の見直しや広告の強化を検討します。部屋数が多くなると、どの部屋がいつから空いているかを台帳から探すのが大変になります。

このマクロは、物件台帳から空室の部屋だけを抜き出し、退去日からの経過日数で並べ替えて、長く空いている部屋が上に来る一覧を作ります。

データの形(例)

「物件台帳」シートを、1行=1部屋として次の列構成とします。

  • A列:物件名
  • B列:部屋番号
  • C列:間取り
  • D列:賃料(円)
  • E列:入居状況(入居中/空室)
  • F列:退去日(空室の場合)
  • G列:募集開始日

コード

入居状況が「空室」の行を対象に、退去日から今日までの日数を計算します。90日以上の部屋は赤、60日以上は黄色にし、最後に空室率と空室による月額の賃料損失の目安を表示します。

Sub VacancyList()
    Dim ws As Worksheet, outWs As Worksheet, data As Variant, out() As Variant
    Dim i As Long, n As Long, total As Long, lost As Double, days As Long

    Set ws = ThisWorkbook.Worksheets("物件台帳")
    Set outWs = ThisWorkbook.Worksheets("空室一覧")
    data = ws.Range("A2:G" & ws.Cells(ws.Rows.Count, "A").End(xlUp).Row).Value
    ReDim out(1 To UBound(data, 1), 1 To 6)

    For i = 1 To UBound(data, 1)
        If data(i, 1) <> "" Then total = total + 1
        If Trim(data(i, 5)) = "空室" Then
            n = n + 1
            If IsDate(data(i, 6)) Then days = Date - CDate(data(i, 6)) Else days = -1
            out(n, 1) = days
            out(n, 2) = data(i, 1): out(n, 3) = data(i, 2): out(n, 4) = data(i, 3)
            out(n, 5) = data(i, 4): out(n, 6) = data(i, 7)
            If IsNumeric(data(i, 4)) Then lost = lost + data(i, 4)
        End If
    Next i

    outWs.Cells.Clear
    outWs.Range("A1:F1").Value = Array("空室日数", "物件名", "部屋", "間取り", "賃料", "募集開始日")
    If n = 0 Then MsgBox "空室はありません": Exit Sub
    outWs.Range("A2").Resize(n, 6).Value = out
    outWs.Range("A1").Resize(n + 1, 6).Sort Key1:=outWs.Range("A2"), Order1:=xlDescending, Header:=xlYes
    For i = 2 To n + 1
        If outWs.Cells(i, 1).Value >= 90 Then
            outWs.Rows(i).Interior.Color = RGB(255, 160, 160)
        ElseIf outWs.Cells(i, 1).Value >= 60 Then
            outWs.Rows(i).Interior.Color = RGB(255, 235, 160)
        ElseIf outWs.Cells(i, 1).Value < 0 Then
            outWs.Cells(i, 1).Value = "退去日未入力"
        End If
    Next i
    outWs.Range("E:E").NumberFormat = "#,##0"
    MsgBox "空室 " & n & " 室/全 " & total & " 室(空室率 " & Format(n / total, "0.0%") & ")" & vbCrLf & _
           "空室分の月額賃料:" & Format(lost, "#,##0") & " 円"
End Sub

コードのポイント

退去日が入力されていない空室は、空室日数を −1 にして区別し、並べ替えたあとで「退去日未入力」と表示しています。台帳の入力漏れに気づくきっかけにもなります。

空室分の月額賃料の合計は、空室によって入っていない家賃の目安です。物件ごとに集計し直すと、どの物件のテコ入れを優先するかの判断材料になります。

活用のヒント

空室日数が長い部屋について、募集開始日が退去日より大きく遅れていないか(原状回復工事の遅れなど)を一緒に見ると、空室が長引く原因を探す手がかりになります。月に1回このマクロで一覧を作り、前月の一覧と比べて、新しく空いた部屋・埋まった部屋を確認する運用もおすすめです。

※サンプルの列構成と色分けの日数は説明用の例です。

ほかの記事