WindowsのExcelでやりたいことをやるためのリンク集

- [Excelを別ウィンドウで複数同時に操作する（Windows編）：Tech TIPS - ＠IT](http://www.atmarkit.co.jp/ait/articles/0708/10/news133.html)

# ショートカット的な
|やりたいこと|ショートカット的なもの|メニューから|
|:-:|:-:|:-:|
|条件付書式|`Alt + O` > `D`|[ホーム(Alt+H)] > [条件付き書式(L2)] > [ルールの管理(R)]|
|重複データを無視してフィルタリング|`Alt + D` > `F` > `A` > `Alt + R`||
|データの入力規則|`Alt + D` > `L`|[データ(Alt+A)] > [データの入力規則(V)] > [データの入力規則(V)]|
|名前の定義|`Ctrl + F3`|入力規則ダイアログの[設定] > [入力値の種類]=「リスト」> [元の値]にカーソルを移動してF3 > [名前の貼り付け]ダイアログで選択 > [OK]|
|参照しているセルを探したい<br>(参照先をトレース)||[数式(Alt+M)] > [参照先のトレース(D)]|
|参照しているセルを探したい<br>(参照先へ移動)|Ctrl + ]||
|トレース矢印を消したい||[数式(Alt+M)] > [トレース矢印の削除(A)] > [トレース矢印の削除(A)]|
|現在日入力|Ctrl + ;||
|現在時刻(日付なし)入力|Ctrl + :||







# 貼り付け・インポート
- HTMLを文字として貼り付けたい : HTMLをWordに貼り付け > 全選択コピー > Excelに貼り付け
- [HTMLのソースをエクセルに貼り付ける方法 -HTMLのソースを、そのまま（- Excel（エクセル） | 教えて!goo](https://oshiete.goo.ne.jp/qa/769345.html)
- [224個のExcelショートカットキー一覧表（Windows/Mac）｜Office Hack](https://office-hack.com/excel/shortcutkey-list/#section9)
- [メールアドレスやURLがリンクにならないようにする方法 - biglobe](https://enjoy.sso.biglobe.ne.jp/archives/hyperlink/)

## XMLをExcelにインポート的な
- Excel for Office365 MSO(16.0.11629.20192) 32bit : `ファイルを開く(Ctrl + O) > XMLファイルを選択 > 開く` でできる
- [ExcelにXMLファイルをインポート（読み込み）する方法 | できるネット](https://dekiru.net/article/11991/)

## CSVを文字コード指定して読み込む
文字コードがUTF-8のCSVをExcelで開きたいときは、「UTF-8」を指定してCSVを取り込むとすると文字化けしない。

- 参考 : [【図解】エクセルだけで簡単にUTF-8のCSVを開く方法（Excel for Office 365） - Qiita](https://qiita.com/YujiHatanaka/items/470a691923303788dc64)
- Mac
    - ![スクリーンショット 2021-08-11 22.56.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/159761/cf7b2001-0267-249e-6aa4-365dc2803812.png)
- Windows
    1. [データ] > [テキストまたはCSVから]
    1. [元のファイル]で「65001:Unicode(UTF-8)」を選択 > [読み込み]






# 設定
- [文字が自動変換されるのを止める方法 - Qiita](https://qiita.com/ponsuke0531/items/33dc07aacce631eb8c49)

## 入力規則を設定したい
- [Excel(エクセル)基本講座：入力規則の使い方](http://www.eurus.dti.ne.jp/~yoneyama/Excel/n-kis.htm)
- [抽出条件 データの入力規則で、他のワークシートまたはブックへの参照は使用しません。](https://support.microsoft.com/ja-jp/help/211548/you-cannot-use-external-references-with-data-validation-in-excel)

## 24時間以上の時間を表示したいときの表示形式

|書式設定の[表示形式]の[ユーザー設定]|合計時間が88:30の場合の表示|
|:-:|:-:|
|hh:mm|16:30|
|[h]:mm|88:30|

- [24時間以上の時刻を表示する：Excel 一般｜即効テクニック](https://www.moug.net/tech/exopr/0070003.html)

# 検索
- 特殊文字の検索やフィルタは`~`でエスケープする
- [[Excel2007] 「*」「?」「～」が含まれる文字をオートフィルタで抽出する方法](http://faq.mypage.otsuka-shokai.co.jp/app/answers/detail/a_id/143822/~/%5Bexcel2007%5D-%E3%80%8C%2A%E3%80%8D%E3%80%8C%3F%E3%80%8D%E3%80%8C%EF%BD%9E%E3%80%8D%E3%81%8C%E5%90%AB%E3%81%BE%E3%82%8C%E3%82%8B%E6%96%87%E5%AD%97%E3%82%92%E3%82%AA%E3%83%BC%E3%83%88%E3%83%95%E3%82%A3%E3%83%AB%E3%82%BF%E3%81%A7%E6%8A%BD%E5%87%BA%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95)
- セル内改行の検索 : `Ctrl + J`
- [セルがどのセルから参照されているか調べる｜参照先のトレース](https://h1r0-style.net/excelvba/trace-dependents-precedents/)






# 関数
|結合したい文字|書き方|参考リンク|
|:--|:--|:--|
|改行|`CHAR(10)`|[Excel関数で改行を挟んで2つのセルの文字列を結合する方法 &#124; できるネット](https://dekiru.net/article/12576/)|

- テキストボックスなんかのオブジェクトに関数を入れたい : 1. オブジェクトを選択する > 2. 数式バーで関数を書く
    - 注意 : オブジェクト直に関数を書いても関数にはならない
- [テキストボックスに関数・数式を:Excel(エクセル)の使い方-描画オブジェクト](http://www.relief.jp/docs/013803.html)
- [配列数式の入力](http://office-qa.com/Excel/ex69.htm) : 数式入力 > Ctrl + Shift + Enter
- [Excelの関数は文字列を計算対象としない - Qiita](https://qiita.com/ponsuke0531/items/3027779377867a43df1c)

## COUNTIFは255文字以上の文字列に使えない
> COUNTIF 関数を使用して 255 文字より長い文字列を照合すると、間違った結果が返されます。
> [COUNTIF 関数 - Office サポート](https://support.office.com/ja-jp/article/countif-%E9%96%A2%E6%95%B0-e0de10c6-f885-4e71-abb4-1f464816df34)

## セル位置情報から〇〇を取得したい

|やりたいこと|関数<br>セルB2に文字列`$C$5`<br>と入力されている|関数の結果|
|:-:|:-:|:-:|
|セルの絶対参照から<br>列の英字だけ取得したい|`=MID(B2,2,FIND("$",B2,2)-2)`|C|
|セルの絶対参照から<br>列番号だけ取得したい|`=CELL("col",INDIRECT(MID(B2,2,FIND("$",B2,2)-2)&"1"))`|3|
|セルの絶対参照から<br>行番号だけ数値で取得したい|`=VALUE(RIGHT(B2,LEN(B2)-FIND("$",B2,2)))`|5|

- [列文字・列番号の変換をかろやかに行いたい - Qiita](https://qiita.com/nomico/items/60bce25569a5276b5817)
- [ADDRESS関数で行番号と列番号からセル参照の文字列を求める | できるネット](https://dekiru.net/article/4477/)

## 関数の結果が表示されない
- 可能性1. セルの書式が「文字列」などになっている(そもそもこの場合は数式自体がセルに表示される)
- [可能性2. [計算方法の設定]が「手動」になっている](https://support.microsoft.com/ja-jp/help/968147)
- 可能性3. よく見ると関数の先頭(=の前とか、配列数式の{の前とか)に「'([シングルクォーテーション/アポストロフィ](https://wa3.i-3-i.info/diff127moji.html))」があって文字になっている(セルに緑マークがよく出てる)

## セル内の文字列に特定文字があるか検索したい
```java
// 検索文字が1つの場合
=IFERROR(IF(FIND("検索文字",[セル]),[あった場合]),[なかった場合])
// 検索文字が複数ある場合
{=IF(MAX(IFERROR(FIND([検索文字が書かれた複数セル(横並びのみ)],[セル]),0))<>0,[あった場合]),[なかった場合])}

// 文字列に含まれる特定文字の数を数えたい
=LEN(文字列があるセル)-LEN(SUBSTITUTE(文字列があるセル,特定文字,""))
```

- [Excel2010：セルに文字が含まれているかを確認する方法 - 教えて！HELPDESK](http://office-qa.com/Excel/ex10.htm)
- [find関数で複数条件を指定する方法](https://excelkamiwaza.com/find_hukusuu.html)

## セルのアドレスを取得したい

```java
// 現在選択しているセルのアドレス
= ADDRESS(ROW(),COLUMN())
// アドレスが示す値を参照する
= INDIRECT(ADDRESS(行番号, 列番号))
```

- [ADDRESS関数の使い方～検索と行列関数 Excel関数](https://kokodane.com/kansu_lookup_01.htm)

## シート名を抜き出したい
```java
/* 凡例) C1:名前を抜き出したいシートの任意のセル */
=RIGHT(CELL("filename",C1),LEN(CELL("filename",C1))-FIND("]",CELL("filename",C1)))
```

## 英字の**ケース変換
```java
/* 凡例) C5:文字列があるセル */
// アッパーキャメル(パスカル)ケースにする
=PROPER(C5)
// 先頭文字だけ大文字にする
=UPPER(LEFT(C5,1))&LOWER(MID(C5,2,LEN(C5)))
```

- [PRORER関数の使い方　初心者のエクセル(Excel)学習・入門](http://excel.onushi.com/function/proper.htm)



# セル結合
- [一度にたくさんのセルの値を結合したい | xxxx7](https://xxxx7.com/2015/03/16/100034)

## セル結合したセルに値を貼り付けたい
1. 「貼り付けたいセル」とは別のBookまたはSheetで、「貼り付けたいセルと同じ列または行分」のセル結合をする。
2. 「結合したのセル」で、その「横のセル」を `=` で参照する。
3. 複数行ある場合は2.の行を行毎コピーして増やす。
4. 2.の「横のセル」に貼り付けたい値を貼り付ける。
5. 「結合したのセル」をコピーして「貼り付けたいセル」に値貼り付けする。


# Excel自体の情報
- Excelのビット数を確認する : ファイル > アカウント > Excelのバージョン情報 > ダイアログ表示 > 上のほうに書いてある([Excelのビット数の確認方法](https://bellcurve.jp/user/ex2012/faq013.html))

## Book内のSheet名一覧が欲しい
1. Visual Basic Editor(Alt + F11) > イミディエイトウィンドウ(Cntrl + G)
2. `For Each i In ThisWorkbook.Sheets: debug.print i.name : next i` > Enter 
3. (ブック名とファイル名をカンマ区切りにする場合)
    - `For Each i In ThisWorkbook.Sheets: debug.print ThisWorkbook.Name","i.name : next i` > Enter 

- [PowerShellでフォルダにあるExcelのシート名を出力するスクリプト - Qiita](https://qiita.com/ponsuke0531/items/d70f2c0d3ca860a1dbc8)

# アドインがメニューに表示されない
```text:やってみること
1. ファイル > オプション > リボンのユーザ設定 > メインタブ > [アドイン]にチェックする
2. ファイル > オプション > アドイン > 一覧に使いたいアドインが表示(インストール)されているか確認する
3. 開発 > COMアドイン > 使いたいアドインにチェック > OK
```

- [アドインが無効になる原因](https://blogs.technet.microsoft.com/outlooksupportjp/2016/05/27/addindisabledno2/)

# 読み込まれていません、COM アドインの読み込み中に実行時エラーが発生しました。

- 原因 : 32bitであるExcelにExcel64bit用のDLLを使ってしまった。
- 事象 : COMアドインのダイアログでダイアログの下に `読み込み時の動作 : 読み込まれていません、COM アドインの読み込み中に実行時エラーが発生しました。` と表示された。
- 環境 : Windows7 64bit / Excel2013 32bit
- 調査経過 :
    1. ユーザ環境変数に `VSTO_SUPPRESSDISPLAYALERTS = 0` を設定する
    2. COMアドインのダイアログで対象のアドインにチェックを入れて[OK]を押下する
    3. ダイアログに `アドインは見つからなかったか、または読み込めませんでした。` と表示される
    4. ダイアログの[詳細]ボタンで内容を確認する。

```text:
ファイルまたはアセンブリ 'xxx'、またはその依存関係の 1 つが読み込めませんでした。指定されたアセンブリ名またはコードベースは無効です。 (HRESULT からの例外: 0x80131047)
************** 例外テキスト **************
System.IO.FileLoadException: ファイルまたはアセンブリ 'xxx'、またはその依存関係の 1 つが読み込めませんでした。指定されたアセンブリ名またはコードベースは無効です。 (HRESULT からの例外: 0x80131047)
ファイル名 'xxx' です。
   場所 System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
<省略>
```

- [「ファイルまたはアセンブリ名 'xxx'、またはその依存関係の 1 つが読み込めませんでした（Could not load file or assembly 'xxx' or one of its dependencies）」エラーが発生する](https://dev.grapecity.co.jp/support/kb/detail.asp?id=31591)
- [VSTOで、Outlook COMアドインのセットアップ](http://blogs.wankuma.com/yaju/archive/2009/06/08/174451.aspx)

# 外部へのリンクを探したい。
1. 関数に記載されているかを確認 : 「.xls」で検索して見つける。(.xlsx/.xlsmも引っかかる)
1. 名前の定義を確認 : リボンの[数式] > [名前の管理] > [参照範囲]を確認
2. 入力規則を確認 : コンボボックスかプルダウンになっているセルを捜索する > [データ] > [データツール] > [データの入力規制]

- [Excelで「リンクの解除」ができない時の対処法 &#8211; 【IT運用保守】サポーターズBlog](http://itsupport.cbit.co.jp/archives/233#5)

# プライバシーに関する注意：このドキュメントには～
```text
プライバシーに関する注意：このドキュメントには、マクロ、ActiveXコントロール、XML 拡張パックの情報、またはWebコンポーネントが含まれています。これらにはドキュメント検査機能で削除することができない個人情報が含まれる場合があります
```

- [社内SEの徒然なる日記 Excel2010でプライバシーに関する注意を表示させない](http://harikofu.blog.fc2.com/blog-entry-211.html)

# 名前 ‘xxx’は既に存在します。
```text
名前 ‘xxx’は既に存在します。この名前にする場合は[はい]をクリックします。移動またはコピーを行うために’xxx’の名前を変更する場合は、[いいえ]をクリックします。
```

- [Excelで非表示の名前定義を表示する方法 - cork.jp](https://cork.jp/blog/%E3%83%96%E3%83%AD%E3%82%B0/excel/post-694.html)

# LibreOfficeのCalc(おまけ)
LibreOfficeは、Windows以外でも使えます。

- [ショートカットキーFrom LibreOffice Help](https://help.libreoffice.org/Calc/Shortcut_Keys_for_Spreadsheets/ja)