あぷりけーしょんの内部的なもの

Program

Excelやスプレッドシートで特定の値をキーにしてデータを抽出する方法として vlookup 関数が有名ですが、vlookup関数の一番の弱点は
「検索キーのリストが一番左側にないとダメ」
ってところです。

vlookup / hlookup 関数の後継関数として xlookup 関数が発表されていますが、現状使える環境はごく一部のテストユーザー向けです。

Microsoft、新しいExcel関数「XLOOKUP」を発表 ~「VLOOKUP」や「HLOOKUP」の後継 – 窓の杜

既存関数の index 関数 と match 関数 でvlookup 関数の弱点を克服した使い方ができますので、覚えておいて損はないと思います。

index / match 関数によるデータ抽出

結論から先に 使い方は

=index("[抽出したいデータの範囲]", match("[検索キー]", "[キーを検索する範囲]", 0))

です。

それぞれの関数の詳細な説明は省きますが、match関数で、検索キーがある行番号を取得して、index関数で取得した行番号に対応するデータを返すといった動きになります。

vloock関数のように、検索キーの場所を選ばないし、取得する列の順番を数える必要もありません。

抽出したいデータ範囲とキーを検索する範囲をそれぞれ名前を付けて、それ上部の式に当てはめればサクっとデータ抽出ができると思います。

Program, Wordpress

PHP7.2にして、Wordpressを動かして見ると、

count(): Parameter must be an array or an object that implements Countable in …(ファイルパス)/wp-includes/post-template.php on line 284

なワーニングメッセージが。

調べてみるとPHP7.2 になって count関数 が変わった模様。
PHP 公式マニュアル

バージョン 説明
7.2.0 count() will now yield a warning on invalid countable types passed to the array_or_countable parameter.

引数が配列かカウントできるオブジェクトじゃないとワーニングを出しますよー。
ってことになったらしい。

で、件の post-template.php では

if ( $page > count( $pages ) ) // if the requested page doesn't exist
	$page = count( $pages ); // give them the highest numbered page that DOES exist

と $pages がどんなオブジェクトがわからないまま、count関数の引数に使われているのでワーニングが出た模様。

$pages が空(NULL)の場合にワーニングが出るので、count関数を使う前に$pagesが空かどうかのチェックを入れればOK。
空の場合は0を入れてあげます。

if ( ! empty( $pages )) {
    if ( $page > count( $pages ) ) // if the requested page doesn't exist
    	$page = count( $pages ); // give them the highest numbered page that DOES exist
} else {
    $page = 0;
}

コンピュータプログラムの世界では 空(NULL) = 0 かどうかか環境依存だったりするので、ややこしいですね。



ひとまず該当箇所を修正して、ファイルを上書きすればワーニングは出なくなります。

Google / Android, Microsoft Windows, Program

エクセル等でデータ編集等をする時に、一つ上のセルの値を参照することは多々あります。
ただ、イコールで値を参照した際には途中で行の挿入・削除を行うと参照元がずれて大変なことになります。

挿入・削除に影響されない、常に一つ上のセルの値を取得するメモ

=INDIRECT(ADDRESS(ROW()-1,COLUMN()))

ExcelやGoogle スプレッドシートでも動作します。

Google / Android, Program


スプレッドシートの関数で引数の文字列にダブルクォーテーション(“)を使いたい場合のメモ。

文字列括りはダブルクォーテーションのみ

他プログラム言語ではシングルクォーテーションも文字列のくくり文字として使えるケースがありますが、Googleスプレッドシートでは使えません。

またバックスラッシュや、二回続けて入力する等のエスケープ方法も使えません。

ダブルクォーテーションを出力する関数

直接ダブルクォーテーションが入力できないのであれば、ダブルクォーテーションを出力する関数を使えばOKです。

ユニコード表に従って、数値を文字に変換する CHAR() 関数が使えます。
ダブルクォーテーションを出力するには「 CHAR(34) 」です。

そのほかの引数の数字と出力される文字の対応は下記サイトで確認できます。
[ Using the CHAR Function in a Google Docs™ Online Spreadsheet – aubrett.com ]

文字列連結関数 Concatenate を使う

文字列の連結には「&」を使った連結もできますが、個人的には連結関数の Concatenate 関数を使うほうがわかりやすい。
ネックは Concatenate って関数名が長いくらいw

exp)セルA1に入っているHTMLデータの中から正規表現を使ってAタグので指定されているURLを取得する

=regexextract(A1,concatenate("<a href=",char(34),"(.*?)",char(34),".*?>"))



参考サイト
[ GoogleスプレッドシートのCONCATENATEでダブルクォーテーションを使う – dackdive’s blog ]

Program

CSVファイルを読み込んでHTMLテーブルを作ってくれるjQueryプラグイン『jquerycsvtotable』
(IDEA*IDEA)

さらに秀逸なのはloadComplete時に別のプラグインを呼び出せる点。テーブル系のプラグインは多いですからね。こうしてテーブルに整形したあとにソート用のボタンを付けるプラグインなどを呼び出すとすっごい便利かも。

ほうほう。
すぐに使う機会は無いが、メモっとこ。