【Excel】VBA関数

# 文字列関数
　△は半角空白を表す。
  　▲は全角空白を表す。

| 関数 | 説明 | コード | 結果 | 備考 |
|:--|:--|:--|:--|:--|
| Asc  | 文字 ⇒ AscII | Asc("A") <br> ASC("ABC")| 65 <br> 65  | 変換するのは1文字目だけ
| Chr  | ASCII ⇒ 文字 | Chr(65)  |  A | |
| LCase  | 大文字⇒小文字  | LCase("AbCdE")  | abcde  | |
| UCase  | 小文字⇒大文字  | UCase("AbCdE")  | ABCDE  | |
| Len  | 文字長  | Len("あいうABC")  | 5  | 全／半角問わず1文字 |
| Left  | 左端の部分文字列を生成  | Left("<b>ABCD</b>E", 4)  | ABCD  | |
| Right  | 右端の部分文字列を生成  | Right("A<b>BCDE</b>", 4)  | BCDE  | |
| Mid  | 中央の部分文字列を生成  | Mid("A<b>BCD</b>E", 2, 3) <br> Mid("A<b>BCDE</b>", 2)   | BCD <br> BCDE  | (文字列, startPos, length) |
| InStr  | 包含判定(先頭から走査)  | InStr("A<b>BCD</b>E", "BCD") <br> InStr("<b>AB</b>ABC", "AB") <br> InStr("ABCDE", "1")  | 2 <br> 1 <br>  0 | 一致 : 一致した先頭文字位置 <br> 不一致 : 0|
| InStrRev  | 包含判定(末尾から走査) | InStrRev("A<b>BCD</b>E", "BCD") <br> InStrRev("AB<b>AB</b>C", "AB") <br> InStrRev("ABCDE", "1")  | 2 <br> <b>3</b> <br>  0 | 一致 : 一致した先頭文字位置 <br> 不一致 : 0 |
| Space  |  空白文字列の生成 | Space(3)  |  △△△ | |
| String  |  繰り返し文字の生成 | String(3, "A") <br>  String(5, "B")  | AAA <br> BBBBB  | |
| Trim  | 空白削除(両端)  | Trim("△▲aaa△▲"))  | aaa  | 全角半角問わず空白を削除|
| RTrim  |空白削除(右端)  |   |   | |
| LTrim  | 空白削除(左端)  |   |   | |
| Replace  | 置換  | Replace("<b>AB</b>CDD<b>AB</b>C", "AB", "ZZ") | <b>ZZ</b>CDD<b>ZZ</b>C | |


## StrConv
　文字列を様々な形式で変換する。

| 意味 | コード | 説明 |
|:--|:--|:--|
| 大文字⇔小文字  | StrConv("aBcDe", vbUpperCase) <br> StrConv("aBcDe", vbLowerCase) <br> StrConv("abcde", vbProperCase) <br> | ABCDE <br> abcde <br> Abcde  |
| 全角⇔半角  | StrConv("123", vbWide) <br> StrConv("１２３", vbNarrow)  | １２３ <br> 123  |
| かたかな⇔ひらがな  | StrConv("あいぁぃ", vbKatakana) <br> StrConv("アイァィ", vbHiragana) | アイァィ <br> あいぁぃ |

# 数学
| 関数 | 説明 | コード | 結果 | 備考 |
|:--|:--|:--|:--|:--|
| Fix | 整数部の取得 | Fix(99.999) <br> Fix(-99.999)| 99 <br> -99 | 
| Int | 整数部の取得 | Int(99.999) <br> Int(-99.999)| 99 <br> -100| 負値の場合 切り上げ(+1)される 
| Rand | 乱数の取得| Rnd | | 乱数の幅は(0.0 ~ 1.0)
| Round | 四捨五入 | Round(1.5) <br> Round(2.5) <br> Round(3.5) | 2 <br> 2 <br> 4|厳密には丸め（JIS丸め、銀行型丸め、最近接偶数丸め）<br>で四捨五入と少し結果が違う

# データの型判定
　・IsXXX()で型が妥当か判定できる。
　・例) IsDate, IsNull, IsArray
## IsDateで判定可能なフォーマットの種類について
　・詳しくはリンクのIsDate参照。
　・OK 2020/9/1, 10/3, 20 10 4, 令和元年10月
　・NG 2020.10.5 (カンマ区切りはだめなので/に変換する等の必要あり)

# データの型変換
　・CXXX()という関数名。
  ・CDate(str), CByte(str)など
　・例) String　⇒　Date型, String ⇒ Byte型

# 日付

| 説明 | コード | 結果 | 備考 |
|:--|:--|:--|:--|:--|
| 現在時刻の取得 | Date <br> Now <br> Time <br> | YYYY/MM/DD <br> YYYY/MM/DD HH24:mi:ss <br> HH24:mi:ss | 戻り値 : Date型 |  
| 年月日時分秒の取得| Year <br> Month <br> Day <br> Hour <br> Minute <br> Second <br> Weekday | YYYY <br> MM <br> DD <br> HH24 <br> mi <br> ss <br> 1 ~ 7(日 ~ 土曜日)| 戻り値 : 整数| 
| 年月日時分秒の取得(汎用)| DatePart("yyyy", date)| 2021 | 上記の関数を一つに汎用化|
| 数値　⇒ 日付型 | DateSerial(2021, 4, 1) <br> DateSerial(2021, 4, 0) <br> TimeSerial(15, 10, 30) <br> TimeSerial(15, -10, 30) <br> TimeSerial(15, 10, -30)| 2021/04/01 <br> 2021/03/31 <br> 15:10:30 <br> 14:50:30 <br> 15:09:30 | 日にちが0 : 前日末日| 
| 日付の加減算 | DateAdd("yyyy", 2, Now) <br> DateAdd("m", -2, Now) | | マイナスの指定も可能 | 
| 日付の差| DateDiff("yyyy", "2020/01/01", "2021/01/01") <br> DateDiff("m",  "2020/01/01", "2021/01/01") <br> DateDiff("d", "2020/01/01", "2021/01/01")| 1 <br> 12 <br> 366 | 1年は12か月, 1年は365日 | 

# 参考サイト
文字列関数 : [リンク] (https://excel-ubara.com/excelvba1/EXCELVBA347.html)
IsDate : [リンク](https://excel-ubara.com/excelvba8/EXCELVBA822.html)
数学／型判定／型変換 : [リンク] (https://excel-ubara.com/excelvba1/EXCELVBA348.html)
日付 : [リンク] (https://excel-ubara.com/excelvba1/EXCELVBA346.html)