Excelの関数を用いて任意の文字列だけを抽出する方法

![任意の文字列を抽出.png](https://qiita-image-store.s3.amazonaws.com/0/160563/350e9a43-1c84-1180-4e5e-098e9437e7c8.png)

#利用シチュエーション

* 特定の文字列から前・後ろの文字列を抽出したい場合
* 特定の文字列から特定の文字列までの間を抽出したい場合

#記述方法
## 特定の文字列から前を抽出する方法
`=LEFT(A2,FIND("/",A2)-1)`

> **前提条件**
> A2のセルに「qiita.com/AquaMeria」と記載されている

---

> **抽出結果**
> qiita.com

---

> **解説**
> FIND関数で特定の文字列が何番目にあるかを探し、その数から1を引いた分だけを抜き出す

> ####個々の関数の説明####
> LEFT関数は文字数を指定し、先頭（左端）から指定した文字数分の文字列を抽出

> |         | 書き方                         | 利用例       |
> |:--------|:----------------------------- |:------------|
> | 書式    | LEFT(文字列,文字数)              | LEFT(A1,1) |
> | 引数1   | 取り出したい文字列を含む文字列を指定 | A1         |
> | 引数2   | 取り出す文字数を指定              | 1          |

> FIND関数は指定した文字列から指定した検索文字列の位置を返す

> |         | 書き方                            | 利用例           |
> |:--------|:---------------------------------|:----------------|
> | 書式    | FIND(検索文字列,対象,開始位置)        | FIND("/",A1,1) |
> | 引数1   | 検索したい文字列を指定                | /              |
> | 引数2   | 検索文字列を含むセル参照又は文字列を指定 | A1             |
> | 引数3   | 検索を開始する位置を指定（省略可能）    | 1              |

###Tips
> **特定文字列の二番目より左を抽出する方法**
> FIND関数の第3引数(検索開始位置)に一つ目の検索文字列より後ろから検索し始めるように指定。

```text:qiita.rb
=LEFT(A3,FIND("/",A3,FIND("/", A3)+1)-1)
```


## 特定の文字列から後を抽出する方法
`=RIGHT(B1,LEN(B1)-(FIND("/",B1)))`

> **前提条件**
> B1のセルに「qiita.com/AquaMeria」と記載されている

---

> **抽出結果**
> AquaMeria

---

> **解説**
> LEN関数で文字列の長さを算出。
> そこからFIND関数で特定の文字列の位置を引いた数を右から抽出

> ####個々の関数の説明####
> RIGHT関数は文字数を指定し、先頭（右端）から指定した文字数分の文字列を抽出

> |         | 書き方                         | 利用例        |
> |:--------|:----------------------------- |:-------------|
> | 書式    | RIGHT(文字列,文字数)             | RIGHT(A1,1)  |
> | 引数1   | 取り出したい文字列を含む文字列を指定 | A1           |
> | 引数2   | 取り出す文字数を指定              | 1            |

> LEN関数は引数に指定した文字列の文字数を返す

> |         | 書き方                                     | 利用例        |
> |:--------|:----------------------------------------- |:-------------|
> | 書式    | LEN(文字列)             　　　　　　　　　　　　| LEN(A1)      |
> | 引数    | 文字数を数えたい文字列をセル参照や文字列などで指定 | A1           |

###Tips
> **特定文字列の二番目以降より右を抽出する方**
> FIND関数の第3引数(検索開始位置)に一つ目の検索文字列より後ろから開始を指定。

```text:qiita.rb
=RIGHT(A3,LEN(A3)-(FIND("/",A3,FIND("/",A3)+1)))
```

## 特定の文字列から特定の文字列までの間を抽出

`=MID(C1,FIND("@",C1)+1,FIND(".",C1)-1-FIND("@",C1))`

> **前提条件**
> C1のセルに「AquaMeria@mail\.com」と記載されている

---

> **抽出結果**
> mail

---

> **解説**
> FIND関数で文字列のはじめと終わりを算出。
> そこからMID関数ではじめから終わりを抜き出す。

> ####個々の関数の説明####
> MID関数は指定したセルに入力されている文字列について指定した場所から指定した文字数の文字を返す

> |         | 書き方                         | 利用例         |
> |:--------|:----------------------------- |:--------------|
> | 書式    | MID(セル,抽出開始位置,抽出文字数）    | MID(C1,2,3)|
> | 引数1   | 取り出したい文字列を含む文字列を指定   | C1         |
> | 引数2   | 抽出したい文字列の先頭文字の位置を指定 | 2           |
> | 引数3   | 取り出す文字数を指定                | 3           |

###Tips
> **特定文字列の二番目以降から特定文字列の二番目以降を抽出する方法**
> 先頭文字の位置を一つ目の検索文字列より後ろを指定。
> 取り出す文字数も特定文字数の二つ目の終わりと始まりから文字数を抽出

```text:qiita.rb
=MID(A3,FIND("@",A3,FIND("@",A3)+1)+1,FIND(".",A3,FIND(".",A3)+1)-1-FIND("@",A3,FIND("@",A3)+1))
```

#サンプル
* URLのドメインのみを抽出

```html:qiita.rb
<!-- http//の2つめの/より後ろからドメイン終了後の/の間を抽出 -->
=MID(A2,FIND("/",A2,FIND("/",A2)+1)+1,FIND("/",A2,FIND("/",A2)+2)-1-FIND("/",A2,FIND("/",A2)+1))
```

* URLに含まれるパラメータを抽出する

```html:qiita.rb
<!--
 パラメータは一つずつ抽出。(下記は一つ目のパラメータを抽出する例)
 URLパラメータは「?x=xx」という形になるので、?から右側を抽出。
 複数の場合は「?x=xx&?y=yy」となるので、?から&の中間を抽出。
-->

<!-- パラメータが一つの場合 -->
=RIGHT(A2,LEN(A2)-(FIND("=",A2)))
<!-- パラメータが複数の場合 -->
=MID($A10,FIND("=",$A10)+1,FIND("&",$A10)-1-FIND("=",$A10))
```

* [上記のサンプルはGoogleスプレッドシートでも確認可能です](https://goo.gl/3ESe5J)