備忘録MS-Excel

# etc

* 文字列を結合する
    * + ではなく & でつなぐ
* Excel2000 には、関数 COUNTIFS が無い
    * これだけでも Excel2000 ではなく LibreOffice を使う理由になる
    * Excel2000 が昔すぎて、現在の便利な諸機能が無いのは、仕方がない
* ブックの共有を解除
    * http://miniminiadmin.jugem.jp/?eid=377
* 数字を漢字で表す書式記号
    * http://www.kenzo30.com/ex_kisotoku/ex_ks_tokubetu7.htm
    * Libre/OpenOffice とは書き方が異なる
        * https://help.libreoffice.org/Common/Number_Format_Codes/ja
* ユーザー定義関数を作る
    * VBAで関数を作ればよい
    * http://kokodane.com/tec3_3.htm
* 数式かどうか調べる
    * Excel2013 には ISFORMULA がある
    * Excel2010 以前には無いので、VBA で自作する
        * http://www.relief.jp/itnote/archives/001232.php
* セルを数式表示にする
    * Ctrl + Shift + @
    * 元に戻す時も↑で
* 不要なスタイルをすべて削除
    * http://excelfilecleaner.codeplex.com/
* 拡張子 .xlsx .xlsm .xlsb の違い
    * http://www.relief.jp/itnote/archives/013909.php
* 数式での他ブック参照は自動的に相対パスになる場合がある
    * http://okwave.jp/qa/q3787217/a11464457.html
* Excelを別ウィンドウで複数同時に操作する
    * http://www.atmarkit.co.jp/ait/articles/0708/10/news133.html
    * 複数のウィンドウになるが、ウィンドウ間で相互やりとりができないのが難点
    * Excel2013では不要な操作


# 不要なスタイルを消す

[Excel File Cleaner](http://excelfilecleaner.codeplex.com/) を使う。
使っていないスタイルを綺麗さっぱり消してくれる(テーマに付いているものは除く)ので便利。
時々、どこかで飾り付けがデフォルトになっていたりすることがあり、万能ではない。
しかし、使って得が多いソフト。


# 自動起動マクロを起動しないでブックを開く

ファイルを選択し、Shift を押しながら起動。

これでもダメなら、一旦 Excel を起動してから、
「ファイルを開く」で Shift を押しながら決定。

* http://oshiete.goo.ne.jp/qa/7744698.html
* [イベント動作(ブックに何か起こったら)色々](http://www.asahi-net.or.jp/~ef2o-inue/vba_k/sub04_130_04.html)


# 色んなエラー判定関数

* ISNA : セルが#N/Aか
* ISERROR : セルがエラーかどうか(ISNAよりも広い)
* IFERROR : エラーだったら、のIF文。色々便利


# VLOOKUPを範囲の右列から検索したい

INDEX と MATCH を併用する。

`=INDEX(取得したい情報がある列,MATCH(検索値,検索値がある列,0),1)`
(例)
`=INDEX(C:C,MATCH("柳川鍋",F:F,0),1)`

http://bibounikki.blogspot.jp/2013/01/vlookup.html


# セルの値によって、セル色や文字色を変える

「条件付き書式」を用いる。
http://www.eurus.dti.ne.jp/~yoneyama/Excel/jyo-syo.html

セルの値が文字列の場合、
文字列を取り扱う関数を利用する。
http://www.eurus.dti.ne.jp/~yoneyama/Excel/kansu/moji_1.htm


# プルダウンメニューで値を入力させる

「入力規則」を用いる。

入力規則のリストは、リスト候補用シートを設けると便利。
条件設定の「元の値」には、

* 値の候補を書いたセル範囲に定義した名前を記入
* 関数INDIRECTでセル範囲を指定して記入

のどちらか楽な方法で書く。

http://www.eurus.dti.ne.jp/~yoneyama/Excel/n-kis.htm#list2


# 上部のセル内容表示を非表示にする

    ツール→オプション→表示タブの数式バーのチェックを外す

これをやると、関数が書いてあるセルがわかりにくくなる。
1セルに多数の行を書き込むのは、
そもそも表計算ソフトの流儀ではないので、やめるべき

http://okwave.jp/qa/q1712073.html


# ステータスバーに文字列を表示

    Application.StatusBar = "スタータスバーへのメッセージ"

ステータスバーを元の状態に戻すには、

    Application.StatusBar = false

http://www.officepro.jp/excelvba/application_other/index2.html


# シート参照で変数を使いたい

    =A1!B3

のような書き方では、シートを参照できない。
そこで INDIRECT を使う。

    =INDIRECT(A1&"!B3")

http://oshiete.goo.ne.jp/qa/3547667.html


#絶対参照・複合参照で関数の中の値をコピー先で変えない

行番号か列番号の前に$を付ける。
参照時にF4を押すと、自動で絶対参照になる。

http://www.relief.jp/itnote/archives/000434.php


#「図が大きすぎます」エラーを防ぐ

以下のレジストリを設定することで、エラーが発生しなくなった。

1. レジストリエディタを起動し、次のサブキーに移動

    HKEY_CURRENT_USER\Software\Microsoft\Office\9.0\Excel\Option

2. [編集] メニューの [DWORD 値] をクリックし次の情報を入力
    * 値の名前 : QFE_NICE
    * データタイプ : REG_DWORD
    * 値 : 1

コピーしたセル範囲あるいはグラフ オブジェクトの EMF (拡張メタファイル) 作成時の、
大きさ制限に引っ掛かる為、エラーが出るようだ。

http://support.microsoft.com/kb/418993/JA


# 右クリックでのxls新規作成のテンプレートを変更する

Windows7だと、

    C:\Windows\ShellNew\EXCEL9.XLS

を変更するとできる。
Excel以外の新規作成でも、同様に可能。
なお、ファイルの更新は管理者権限が必要。

http://www6.atpages.jp/tokunaga/excelnew/excelnewdif.html


# 数値を0で埋める

ゼロサプライ、ゼロパディング、等と呼ばれているものです。

    =TEXT(A1,"00000")

これで、セルA1の数値が0で埋めた5桁の数字になります。