【不動産】物件台帳から空室一覧と空室期間を出し、長期空室を目立たせる
賃貸物件の部屋ごとの台帳から、現在空室の部屋を抜き出し、空室になってからの日数を計算して、長期空室の部屋を目立たせた一覧を作るマクロです。
想定する場面
賃貸管理会社では、管理している物件のうち空室になっている部屋を把握し、募集条件の見直しや広告の強化を検討します。部屋数が多くなると、どの部屋がいつから空いているかを台帳から探すのが大変になります。
このマクロは、物件台帳から空室の部屋だけを抜き出し、退去日からの経過日数で並べ替えて、長く空いている部屋が上に来る一覧を作ります。
データの形(例)
「物件台帳」シートを、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回このマクロで一覧を作り、前月の一覧と比べて、新しく空いた部屋・埋まった部屋を確認する運用もおすすめです。
※サンプルの列構成と色分けの日数は説明用の例です。
ほかの記事
基本・高速化最終行を正しく取得する方法(End(xlUp)・UsedRange・CurrentRegion の違い)データの最終行を取得する代表的な3つの方法と、空白行や書式だけ残ったセルで結果がずれる原因、実務で安全な書き方を解説します。基本・高速化マクロを速くする基本(画面更新の停止・計算の手動化・配列での一括処理)セルを1つずつ読み書きする遅いマクロを、画面更新の停止・計算方法の切り替え・配列での一括処理で速くする方法を、元に戻し忘れを防ぐ書き方とあわせて解説します。基本・高速化日付の扱い方(文字列の日付の変換・月末日・締め日の計算)CSV から取り込んだ文字列の日付を日付型に変換する方法、DateSerial を使った月末日や締め日の計算、和暦の表示など、日付で間違えやすい点をまとめます。データ集計・抽出複数シートのデータを1枚のシートに集約する支店別・月別など同じ形式の複数シートを、1枚の集計用シートにまとめるマクロです。見出しの扱い、元シート名の記録、集計シートの作り直しまで解説します。