【Excel】単位の自動表示

お金の単位

①右クリックから「セルの書式設定」を選択

②「ユーザー定義」で書式を設定
「[>=100000000]0″億”###0″万”###0;[>=10000] ###0″万”###0; 0」を設定

③入力した数字に応じて単位が付与される

時間の単位

①「お金の単位」と同様に以下の書式を設定
「[>=10000] #0″hour”#0″min”#0″sec”; [>=100] #0″min”#0″sec”; #0″sec”」
※日本語表記の場合は「[>=10000] #0″時間”#0″分”#0″秒”; [>=100] #0″分”#0″秒”; #0″秒”」

②入力した数字に応じて単位が付与される
ex) 「120」 = 「1min20sec」

【Excel】Excelファイルと同階層の最新フォルダを開く

①マクロを使えるようにする
マクロを使えるようにする」を参照

②FileSystemObjectを利用するため、「Microsoft Scripting Runtime」を参照
ライブラリの参照方法は「ライブラリを参照する」を参照

③必要に応じてボタン配置
ボタンの配置方法は「表を複数の条件で絞り込む②」を参照

④Microsoft Visual Basic for Applications」にて以下のコードを記載

Sub ボタン1_Click()
Dim fso As FileSystemObject
Set fso = New FileSystemObject

'Excelファイルが配置されているフォルダを取得
Dim pfl As Folder
Set pfl = fso.GetFolder(ActiveWorkbook.Path)

'Excelファイルと同じ階層にフォルダがなければ処理を終了
If pfl.SubFolders.Count = 0 Then
Set fso = Nothing
Exit Sub
End If

'最終的に開くフォルダ
Dim ofl As Folder
'日付を確認するために一時的に取得するフォルダ
Dim tfl As Folder

'サブフォルダ分日付を検証
For Each tfl In pfl.SubFolders
'初回のみoflに代入
If ofl Is Nothing Then
Set ofl = tfl
End If

'tflの更新日付がoflよりも大きければoflに代入(作成日時で比較の場合は「DateCreated」を使用)
If ofl.DateLastModified < tfl.DateLastModified Then
Set ofl = tfl
End If
Next

'一番更新日付が大きいoflを起動
Shell "C:\Windows\explorer.exe " & ofl.Path, vbNormalFocus
End Sub

【Excel】表を複数の条件で絞り込む②

①マクロを使えるようにする
マクロを使えるようにする」を参照

②検索文字入力欄と検索ボタンを配置

③ボタン配置時の以下の画面で「マクロ名」を「SearchGoods」として「新規作成」を押す

④「Microsoft Visual Basic for Applications」にて以下のコードを記載
※表の形式に応じて「★」のついた箇所の数値を変更

Sub SearchGoods()
'検索文字入力行・列
Dim searchValueRow As Integer: searchValueRow = 2 '★
Dim searchValueCol As Integer: searchValueCol = 2 '★
'検索対象列
Dim targetCol As Integer: targetCol = 3 '★
'検索開始行
Dim startRow As Integer: startRow = 5 '★
'検索終了行
Dim lastRow As Integer: lastRow = 9 '★

'半角文字で区切った検索文字を配列に格納
Dim searchValues() As String: searchValues = Split(Cells(searchValueRow, searchValueCol).Value, " ")

'開始行から終了行までループ
For i = startRow To lastRow Step 1
Dim val As Variant
'半角文字で区切った検索文字でループ
For Each val In searchValues
'検索文字が含まれない場合は行を非表示にして次の行へ
If InStr(Cells(i, targetCol).Value, val) = 0 Then
Rows(i).Hidden = True
GoTo Continue
End If
Next val
'全ての検索文字が含まれる場合、または検索文字が何も入力されていない場合は
'行を表示
Rows(i).Hidden = False
Continue:
Next
End Sub

検索データの行数が増える場合は10行目のコードを以下のようにしておく事で、
追加した行数も考慮して最終行の取得が可能

Dim lastRow As Integer: lastRow = ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count - 1