Excelで叶える!お店リスト作成術:あなたの「行きたい」を叶えるパーソナルガイド
Excelで叶える!お店リスト作成術:あなたの「行きたい」を叶えるパーソナルガイド
この記事では、Excelを活用して、あなただけの理想的なお店リストを作成する方法を徹底解説します。単なるお店の記録ではなく、その日の気分や時間帯に合わせて、あなたにぴったりの「行きたいお店」を簡単に見つけられる、そんなリスト作りの秘訣をお伝えします。お店の住所に基づいた並び替え、Googleマップとの連携、曜日ごとの営業時間管理、そして最終的にはスマホでの閲覧まで、あなたの「欲しい」を叶えるための具体的なステップを、豊富な事例と共にご紹介します。
Excel2010でお店のリストを作っています。
店名、お店の大まかな特色、アクセスのしやすさ(移動時間)営業時間・定休日などを一覧で見比べ、その日の気分や時間帯に合わせて来店する店を選べるようにするのが目的です。
WEBサイトのブックマークや食べログ等では必要の無い情報やわずらわしいページ移動があったり、一覧で見比べる等が出来ないので、店の追加・情報の更新も容易かつシンプルで見やすい表を作りたいと思っています。
自分が個人的に使うモノで最終的にはスマホでの閲覧を目的にしています。
そこで
・お店の住所を元にとある地点(自宅等)に物理的に近い順に並べ替える方法
・住所をクリックすることで自動的にGoogle mapのルート検索をする方法
のどちらか、または両方
・曜日によって違う営業時間や定休日のデータを並べ替えやグループ分けの条件に使う
・上記のすべての機能を実現した上でHTML形式で保存(スマホでの閲覧が可能であれば形式問わず)
は可能でしょうか?またどのような方法を使えばよいでしょうか?
個人的に調べた結果VBAを使うのが良さそうなのですが細かいところがわかりません。
わかりやすくご教示くださる方はどうぞよろしくお願いいたします。
個人的な試みですので、「もっと詳しくしらべろ」、「それは不可能だ」等のご回答はせずスルーでお願いいたします。
不可能だったり解答がつかない場合は素直にあきらめます。
1. 理想のお店リスト作成への第一歩:目的と要件の明確化
まず、あなたの理想のお店リストがどのようなものか、具体的にイメージすることから始めましょう。今回の質問者様のように、お店選びをよりパーソナルで楽しいものにするためには、以下の3つのポイントを明確にすることが重要です。
- 目的の再確認: 何のためにこのリストを作成するのか? どんな時にこのリストを使うのか?(例:ランチ選び、週末のディナー選び、急な来客時の対応など)
- 必要な情報の整理: どのような情報をリストに含めるのか?(例:店名、ジャンル、予算、営業時間、定休日、口コミ、写真、アクセス方法など)
- 優先順位付け: どの機能を優先的に実装するのか?(例:最寄りの店舗から表示、Googleマップ連携、スマホでの閲覧など)
これらの要素を明確にすることで、Excelでのリスト作成がスムーズに進み、あなたの理想に近づくことができます。
2. Excelで実現!お店リストの基本構造
お店リストの基本構造は、Excelの表組み機能を使って簡単に作成できます。以下は基本的な項目の例です。
| 店名 | ジャンル | 住所 | 電話番号 | 営業時間 | 定休日 | 予算 | 特徴 | アクセス |
|---|---|---|---|---|---|---|---|---|
| 例:カフェA | カフェ | 東京都渋谷区… | 03-xxxx-xxxx | 10:00-20:00 | 水曜日 | 1000円 | Wi-Fiあり、電源あり | 渋谷駅から徒歩5分 |
| 例:レストランB | イタリアン | 東京都新宿区… | 03-yyyy-yyyy | 11:30-14:30, 18:00-22:00 | 月曜日 | 3000円 | 個室あり、予約必須 | 新宿駅から徒歩10分 |
この基本構造に、あなたの求める情報を追加していくことで、あなただけのパーソナルなお店リストが完成します。
3. 住所から距離を算出!並び替え機能の実装
お店の住所から自宅までの距離を算出し、近い順に並び替える機能は、VBA(Visual Basic for Applications)を使用することで実現できます。以下に、その手順とコード例を示します。
ステップ1:Google Maps APIキーの取得
Google Maps APIを利用するためには、APIキーの取得が必要です。Google Cloud PlatformのコンソールでAPIキーを取得し、Excel VBAで使用できるように設定します。
ステップ2:VBAコードの実装
ExcelのVBAエディタを開き、以下のコードを記述します。このコードは、住所から緯度経度を取得し、距離を計算します。
Option Explicit
' Google Maps APIキーを設定
Const API_KEY As String = "YOUR_GOOGLE_MAPS_API_KEY"
' 自宅の緯度経度を設定
Const HOME_LATITUDE As Double = 35.6895 ' 例:東京駅の緯度
Const HOME_LONGITUDE As Double = 139.6917 ' 例:東京駅の経度
' Google Maps APIから緯度経度を取得する関数
Function GetCoordinates(address As String) As Variant
Dim xmlHttp As Object
Dim url As String
Dim response As String
Dim json As Object
Dim latitude As Double
Dim longitude As Double
Set xmlHttp = CreateObject("MSXML2.XMLHTTP")
url = "https://maps.googleapis.com/maps/api/geocode/json?address=" & EncodeURL(address) & "&key=" & API_KEY
xmlHttp.Open "GET", url, False
xmlHttp.Send
response = xmlHttp.responseText
Set json = JsonConverter.ParseJson(response)
If json("status") = "OK" Then
latitude = json("results")(1)("geometry")("location")("lat")
longitude = json("results")(1)("geometry")("location")("lng")
GetCoordinates = Array(latitude, longitude)
Else
GetCoordinates = Null
End If
Set xmlHttp = Nothing
Set json = Nothing
End Function
' 距離を計算する関数(メートル単位)
Function CalculateDistance(lat1 As Double, lon1 As Double, lat2 As Double, lon2 As Double) As Double
Dim R As Double: R = 6371000 ' 地球の半径(メートル)
Dim lat1Rad As Double: lat1Rad = Application.WorksheetFunction.Radians(lat1)
Dim lon1Rad As Double: lon1Rad = Application.WorksheetFunction.Radians(lon1)
Dim lat2Rad As Double: lat2Rad = Application.WorksheetFunction.Radians(lat2)
Dim lon2Rad As Double: lon2Rad = Application.WorksheetFunction.Radians(lon2)
Dim deltaLat As Double: deltaLat = lat2Rad - lat1Rad
Dim deltaLon As Double: deltaLon = lon2Rad - lon1Rad
Dim a As Double
a = Sin(deltaLat / 2) ^ 2 + Cos(lat1Rad) * Cos(lat2Rad) * Sin(deltaLon / 2) ^ 2
Dim c As Double
c = 2 * Atan2(Sqr(a), Sqr(1 - a))
CalculateDistance = R * c
End Function
' URLエンコード関数
Function EncodeURL(ByVal str As String) As String
Dim i As Long
Dim result As String
result = ""
For i = 1 To Len(str)
Dim char As String
char = Mid(str, i, 1)
If Asc(char) <= 127 Then
If char = " " Then
result = result & "+"
Else
result = result & char
End If
Else
result = result & "%" & Hex(Asc(char))
End If
Next i
EncodeURL = result
End Function
' メインルーチン
Sub CalculateDistances()
Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Sheet1") ' シート名を変更してください
Dim lastRow As Long: lastRow = ws.Cells(Rows.Count, "C").End(xlUp).Row ' 住所が入力されている最終行を取得
Dim i As Long
Dim address As String
Dim coordinates As Variant
Dim latitude As Double
Dim longitude As Double
Dim distance As Double
' ヘッダー行に「距離」列を追加
ws.Cells(1, "I").Value = "距離(メートル)" ' 例:I列に距離を表示
For i = 2 To lastRow ' 2行目から開始(1行目はヘッダー)
address = ws.Cells(i, "C").Value ' 例:C列に住所が入力されている
coordinates = GetCoordinates(address)
If Not IsNull(coordinates) Then
latitude = coordinates(0)
longitude = coordinates(1)
distance = CalculateDistance(HOME_LATITUDE, HOME_LONGITUDE, latitude, longitude)
ws.Cells(i, "I").Value = distance ' 例:I列に距離を格納
Else
ws.Cells(i, "I").Value = "取得エラー"
End If
Next i
' 距離で並び替え
ws.Sort.SortFields.Clear
ws.Sort.SortFields.Add Key:=ws.Range("I2:I" & lastRow), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ws.Sort
.SetRange ws.Range("A1:I" & lastRow) ' 並び替え範囲を指定
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
MsgBox "距離の計算と並び替えが完了しました。", vbInformation
End Sub
コードの解説:
- APIキーの設定:
Const API_KEY As String = "YOUR_GOOGLE_MAPS_API_KEY"の部分に、取得したAPIキーを入力します。 - 自宅の緯度経度の設定:
Const HOME_LATITUDE As Double = 35.6895とConst HOME_LONGITUDE As Double = 139.6917に、自宅の緯度経度を入力します。 - GetCoordinates関数:Google Maps Geocoding APIを使用して、住所から緯度経度を取得します。
- CalculateDistance関数:緯度経度から距離を計算します(メートル単位)。
- CalculateDistances Sub:メインルーチンで、各住所の距離を計算し、距離の短い順に並び替えます。
ステップ3:VBAコードの実行
- Excelのシートを開き、住所を入力した列(例:C列)と、距離を表示する列(例:I列)を用意します。
- VBAエディタで、上記のコードをコピー&ペーストします。
CalculateDistancesプロシージャを実行します。- 距離が計算され、近い順に並び替えられます。
注意点:
- Google Maps APIの使用には、APIキーが必要です。
- APIの使用料が発生する場合があります。Google Cloud Platformの料金体系を確認してください。
- 住所の正確さが重要です。
4. Googleマップ連携!住所をクリックしてルート検索
住所をクリックするとGoogleマップのルート検索が起動するようにするには、ハイパーリンクを使用します。以下の手順で設定します。
ステップ1:ハイパーリンクの挿入
- 住所が入力されているセルを選択します。
- 右クリックし、「ハイパーリンク」を選択します。
- 「アドレス」欄に、以下のURLを入力します。
https://www.google.com/maps/search/?api=1&query=[住所]
ここで、[住所]の部分は、住所が入力されているセルの参照(例:C2)に置き換えます。例えば、C2セルに住所が入力されている場合は、以下のようになります。
https://www.google.com/maps/search/?api=1&query=C2
これにより、セルをクリックするとGoogleマップが起動し、その住所の場所が表示されます。
ステップ2:ルート検索の追加(VBAを使用)
さらに、自宅からのルート検索を自動的に行うには、VBAを使用します。以下のコードをVBAエディタに記述します。
Sub CreateGoogleMapsLink()
Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Sheet1") ' シート名を変更してください
Dim lastRow As Long: lastRow = ws.Cells(Rows.Count, "C").End(xlUp).Row ' 住所が入力されている最終行を取得
Dim i As Long
Dim address As String
Dim googleMapsURL As String
For i = 2 To lastRow ' 2行目から開始(1行目はヘッダー)
address = ws.Cells(i, "C").Value ' 例:C列に住所が入力されている
googleMapsURL = "https://www.google.com/maps/dir/?api=1&origin=" & EncodeURL(HOME_ADDRESS) & "&destination=" & EncodeURL(address)
' ハイパーリンクを挿入
ws.Hyperlinks.Add Anchor:=ws.Cells(i, "C"), Address:=googleMapsURL, TextToDisplay:=address
Next i
MsgBox "Google Mapsのハイパーリンクが作成されました。", vbInformation
End Sub
' 自宅の住所を設定
Const HOME_ADDRESS As String = "YOUR_HOME_ADDRESS"
' URLエンコード関数
Function EncodeURL(ByVal str As String) As String
Dim i As Long
Dim result As String
result = ""
For i = 1 To Len(str)
Dim char As String
char = Mid(str, i, 1)
If Asc(char) <= 127 Then
If char = " " Then
result = result & "+"
Else
result = result & char
End If
Else
result = result & "%" & Hex(Asc(char))
End If
Next i
EncodeURL = result
End Function
コードの解説:
- HOME_ADDRESS:
Const HOME_ADDRESS As String = "YOUR_HOME_ADDRESS"に、自宅の住所を入力します。 - EncodeURL関数:URLエンコードを行います。
- CreateGoogleMapsLink Sub:各住所のセルに、自宅からのルート検索を行うハイパーリンクを挿入します。
実行方法:
- VBAエディタで、上記のコードをコピー&ペーストします。
HOME_ADDRESSに自宅の住所を入力します。CreateGoogleMapsLinkプロシージャを実行します。- 住所のセルをクリックすると、Googleマップが起動し、自宅からのルートが表示されます。
5. 曜日ごとの営業時間と定休日の管理
曜日ごとの営業時間や定休日のデータを管理するには、以下の方法があります。
方法1:別シートでの管理
- 新しいシートを作成し、「営業時間」シートとします。
- 店名、曜日、営業時間、定休日などの項目を作成し、各店舗の情報を入力します。
- メインのリストシートで、VLOOKUP関数を使って、曜日ごとの情報を参照します。
=VLOOKUP(店名, 営業時間!A:D, COLUMN()-1, FALSE)
この数式を営業時間や定休日の列に入力し、店名に基づいて情報を表示します。
方法2:条件付き書式とデータの検証
- メインのリストシートで、曜日を入力する列を作成します(例:D列)。
- データの検証機能を使って、曜日をドロップダウンリストで選択できるようにします。
- 条件付き書式を使って、選択された曜日によって、営業時間のセルの背景色を変えるなど、視覚的に分かりやすくします。
これにより、曜日を選択するだけで、営業時間の情報を簡単に確認できます。
6. スマホでの閲覧とHTML形式での保存
スマホでの閲覧を可能にするためには、以下の方法があります。
方法1:Excel Onlineの利用
Excel Onlineは、Microsoftアカウントを持っていれば無料で利用できるWeb版のExcelです。作成したExcelファイルをOneDriveに保存し、スマホからExcel Onlineにアクセスして閲覧できます。編集も可能です。
方法2:HTML形式での保存
ExcelファイルをHTML形式で保存し、スマホのブラウザで閲覧することも可能です。ただし、Excelのすべての機能がHTMLに変換されるわけではありません。以下に手順を示します。
- Excelファイルを開きます。
- 「ファイル」→「名前を付けて保存」を選択します。
- 「ファイルの種類」で「Webページ (*.htm; *.html)」を選択します。
- 保存場所を指定し、「保存」をクリックします。
HTML形式で保存されたファイルは、スマホのブラウザで開いて閲覧できます。ただし、VBAで作成した機能や、一部の高度な書式設定は表示されない場合があります。
方法3:Googleスプレッドシートの利用
Googleスプレッドシートは、Googleアカウントを持っていれば無料で利用できるWeb版のスプレッドシートです。Excelファイルと同様の機能があり、スマホアプリも提供されています。ExcelファイルをGoogleスプレッドシートにインポートし、スマホで閲覧・編集できます。共有機能も充実しています。
7. 実践例:お店リスト作成ステップバイステップ
具体的なお店リスト作成のステップを、事例を交えて解説します。
ステップ1:リストの準備
- Excelを開き、新しいブックを作成します。
- シート1の名前を「お店リスト」に変更します。
- 以下の項目をヘッダーとして入力します。
- 店名
- ジャンル
- 住所
- 電話番号
- 営業時間(月)
- 営業時間(火)
- ...(曜日ごとに)
- 定休日
- 予算
- 特徴
- メモ
ステップ2:データの入力
- お店の情報を各セルに入力します。
- 住所は正確に入力します。
- 営業時間は、曜日ごとに分けて入力します。
ステップ3:VBAによる距離計算と並び替え
- VBAエディタを開き、上記の距離計算と並び替えのコードをコピー&ペーストします。
- APIキーと自宅の住所を正しく設定します。
CalculateDistancesプロシージャを実行します。- 距離が計算され、近い順に並び替えられます。
ステップ4:Googleマップ連携
- 住所のセルを選択し、ハイパーリンクを設定します(上記参照)。
- VBAエディタで、Googleマップのルート検索のコードをコピー&ペーストします。
- 自宅の住所を設定し、
CreateGoogleMapsLinkプロシージャを実行します。 - 住所のセルをクリックして、Googleマップでルートを確認します。
ステップ5:スマホでの閲覧
- ファイルをOneDriveに保存し、Excel Onlineで開きます。
- スマホからExcel Onlineにアクセスし、お店リストを閲覧します。
これにより、スマホでいつでもお店リストを確認し、ルート検索や営業時間の確認ができるようになります。
8. まとめ:あなただけの「行きたい」を叶えるお店リストの完成へ
この記事では、Excelを使ってあなただけのパーソナルなお店リストを作成する方法を解説しました。住所からの距離計算、Googleマップ連携、曜日ごとの営業時間管理、スマホでの閲覧など、あなたの「行きたい」を叶えるための様々な機能の実装方法をご紹介しました。これらの機能を組み合わせることで、お店選びがより楽しく、効率的になるはずです。
あなたも、この記事で紹介した方法を参考に、自分だけのお店リストを作成し、充実したお店ライフを送りましょう!
もっとパーソナルなアドバイスが必要なあなたへ
この記事では一般的な解決策を提示しましたが、あなたの悩みは唯一無二です。
AIキャリアパートナー「あかりちゃん」が、LINEであなたの悩みをリアルタイムに聞き、具体的な求人探しまでサポートします。
無理な勧誘は一切ありません。まずは話を聞いてもらうだけでも、心が軽くなるはずです。