Excel で 手軽に2018年(前年)の日付を入力する

(使用している Excel は Excel 2016 です)

この時期、Excel で前年の日付を入力するケースは 結構多いと思いますが、 Excel では 年を省略すると PC の年を使用するようで "2019/12/28" のようになってしまいます。

普段は便利なこの省略も この時期はとても困ります。 ソート順や計算にも影響しますし そもそも正しい値じゃないです。

Excel に標準で対応する機能はないようで VBAも・・・と思っていたら 良い方法が紹介されていました。

[参考]
来年の日付入力を簡単に?オートコレクト:Excel(エクセル)の使い方-入力・編集

このサイトの方も 別の記事を紹介しているようですが 画像付きで分かりやすく説明されています。

オートコレクトで 特定の文字を "2018/" のよう 固定で前年の値に変換させるわけですが 泥臭いようでこれが実に便利です。 シートごとに設定しなくても良いのも良いですね。

日付を入力することが多いと かなり役立ちます。

watch コマンドで一定間隔でコマンドを実行する

(使っている Linux は Ubuntu 14.04.3 LTS です)

watch コマンドは 指定したコマンドを一定間隔で実行して 出力結果の差分を表示してくれますが この「一定間隔でコマンドを実行する」という機能は それだけで便利です。

次のようにすると 3秒ごとに Webサーバにアクセスします。

$ watch -n 3 wget -q http://localhost/hogehoge -O - > /dev/null

繰り返すだけなら while などでもできますが 一定間隔で実行するなら watch コマンドを使うのが簡単で便利です。

Linux を ストップウォッチにする

(使っている Linux は Ubuntu 14.04.3 LTS です)

そんな状況があるかどうかわかりませんが Linux を使っていて ストップウオッチが必要になった場合の方法です。

$ time read

これだけです。

コマンドの実行で開始、 [Enter] を押すと時間が出ます。

$ time read

real    0m4.696s
user    0m0.000s
sys     0m0.000s

Excel の覚えておきたいショートカット 10選 2018年版

(使用している Excel は Excel 2016 です)

ファンクションキー系

[F4]

やっぱり、これ [F4]。

前の処理を繰り返すことができるので、同じ操作を続けるときに超便利。 それ以外でも、数式の入力時にセルの参照の絶対・相対を切り替えてくれるので 使用頻度が高いキーです。

[F2]

セルの選択から編集モードに入るときにも使用しますが 入力モードから編集モードに切り替えるときも使用します。

書式系

[Ctrl] + [Shift] + [~]

セルの書式の「分類」を「標準」に戻すショートカットです。
詳しくは Excel で セルの書式の「分類」を「標準」に戻すショートカット を参照。

値の入力系

[Ctrl] + [;] (セミコロン)
[Ctrl] + [:] (コロン)

セミコロンの方は、セルに現在の「日付」を入力します。 コロンの方は「時刻」です。 今日の日付を入力する機会は多いので よく使います。

[Alt] + [Shift] + [=]

選択した範囲に対して SUM ワークシート関数を入力します。 リボンにある Σ ボタンと同じですが ちょっと検算するときにマウスを使わなくても済みます。

[Ctrl] + [d]
[Ctrl] + [r]

枠線系

[Ctrl] + [Shift] + [&]

選択範囲に 外枠を引くショートカットです。
詳しくは Excel の 罫線に関するショートカット 2つ を参照。

[Ctrl] + [Shift] + [_]

選択範囲内の罫線を消すショートカットです。
詳しくは Excel の 罫線に関するショートカット 2つ を参照。

ダイアログ表示系

[Ctrl] + [1]

「セルの書式設定」ダイアログを表示します。

[Ctrl] + [Alt] + [v]

セルを複写中に押すと「形式を選択して貼り付け」ダイアログを表示します。 とても押しにくいキーなので 使っていると 「Excelがメッチャ好きな人だ」と思ってもらえます。

bash で 終了時に 一時ファイルを自動的に削除する

(使っている Linux は Ubuntu 14.04.3 LTS です)

シェルスクリプトで作成した 一時ファイルを 終了後に自動的に消します。

ポイントは 2点あります。

@子プロセスで作成した一時ファイルのパスを 親プロセスで取得するのは シェルスクリプトでは大変なので、 一時ファイルは最初に起動したシェルスクリプトが 作成するディレクトリの配下に格納します。

A最初に起動したシェルスクリプトの終了時に builtinコマンドの trap で 一時ファイルを削除する処理(function)を自動的に実行します。

まず、一時ファイル用のディレクトリを作成します。

declare -r SCRIPT_PATH=${BASH_SOURCE:-$0}
declare -r SCRIPT_NAME=$(basename "${SCRIPT_PATH}")
declare -r SCRIPT_TMP_DIR=$(mktemp -d -t "${SCRIPT_NAME}.XXXXXX")

何かあったときに調査しやすいように シェルスクリプトの名前を付けたディレクトリを作成します。

上記の場合 環境変数 TMPDIR に従って 次のようなディレクトリ名になります。 (TMPDIR が /tmpの場合)

/tmp/hogehhoge.sh.mBzqNx

この値を 環境変数 TMPDIR にセットします。

export TMPDIR=${SCRIPT_TMP_DIR}

これで 子プロセスや functionなどで 一時ファイルを作る際も mktemp に 環境変数 TMPDIR を使用するオプションを付けておけば 同じディレクトリに 一時ファイルを作成することができます。

次に 自動的に 一時ファイルを削除する仕組みです。

一時ファイルを削除して終了する functionを定義します。

function on_exit_event() {
    local script_exit_code=${1}
    rm -Rf "${SCRIPT_TMP_DIR}"
    exit ${script_exit_code}
}

rmコマンドのオプションに "-f" を付けてファイルがないときもエラーが出ないようにし、 "-R" で、ファイルではなく、一時ディレクトリを作成した場合も削除できるようにします。

これを trap で起動するようにします。

trap 'on_exit_event ${?}' EXIT

これで 一時ファイルが 最初に起動したシェルスクリプトの終了時に 自動的に削除されます。

全体は次のようになります。

#!/usr/bin/env bash

declare -r SCRIPT_PATH=${BASH_SOURCE:-$0}
declare -r SCRIPT_NAME=$(basename "${SCRIPT_PATH}")
declare -r SCRIPT_DIR=$(cd $(dirname "${SCRIPT_PATH}"); pwd)
declare -r SCRIPT_FULL_PATH=${SCRIPT_DIR}/${SCRIPT_NAME}

declare -r SCRIPT_TMP_DIR=$(mktemp -d -t "${SCRIPT_NAME}.XXXXXX")
export TMPDIR=${SCRIPT_TMP_DIR}

function on_exis_sub_event() { :; }

function on_exit_event() {
    local script_exit_code=${1}
    on_exis_sub_event
    rm -Rf "${SCRIPT_TMP_DIR}"
    exit ${script_exit_code}
}

trap 'on_exit_event ${?}' EXIT

(主処理)

on_exis_sub_eventは 終了時の処理を追加したくなった場合に 上書きするための functionです。 とりあえず 空で定義しておいて 必要に応じて 後で再定義します。

Excel で 月末日を取得する EOMONTH

(使用している Excel は Excel 2016 です)

各言語や SQLなどで 「月末」を取得する関数がありますが Excelのワークシート関数にもあります。

EOMONTH(開始日,月)

EOMONTH という関数で 日付と何か月後(前)を指定すると 月末の日付が返ってきます。

「今日」と「0ヵ月」を指定すると 今月の月末日になります。

=EOMONTH(TODAY(),0)

Excel では日付に +1 すると その日付の翌日になるため、 次のようにすると翌月の初日になります。

=EOMONTH(TODAY(),0)+1

他にも色々使えます。

月末日なので DAY 関数で その月の日数を取得できます。

=DAY(EOMONTH(TODAY(),0))

DAYS 関数なら 今日から月末日までの日数を取得できます。

=DAYS(EOMONTH(TODAY(),0),TODAY())

Google サイト内検索

Amazonアソシエイト