恥ずかしながら最近まで知りませんでした。
フィルターで絞り込んでも、SUMでは全体の合計のままですが、
SUBTOTAL
という関数を使えばフィルターで絞り込んだ結果に対して合計を出してくれます。
例)
1 |
=SUBTOTAL(9, A1:A99) |
1つ目の引数は集計方法で、合計の場合は9を入れます。
2つ目の引数に範囲を指定します。
在宅プログラマーの備忘録として2005年に始めたブログです。
恥ずかしながら最近まで知りませんでした。
フィルターで絞り込んでも、SUMでは全体の合計のままですが、
SUBTOTAL
という関数を使えばフィルターで絞り込んだ結果に対して合計を出してくれます。
例)
1 |
=SUBTOTAL(9, A1:A99) |
1つ目の引数は集計方法で、合計の場合は9を入れます。
2つ目の引数に範囲を指定します。
Excelで1件が2行ある表もめずらしくありませんよね。
その場合の合計を出すにはどうすればよいのか。
・行番号を取得するROW関数、
・割った余りを出すMOD関数
・条件分岐のIF関数
・そしてSUM関数
これらを組み合わせればできます。
例)A列の1~99行において、行番号が偶数の行だけを合計する
1 |
=SUM(IF(MOD(ROW(A1:A99),2)=0,A1:A99,0)) |
つまり、
「行番号を2で割った余りが0だったらその値を加え、そうでなければ0を加える」
という意味です。
奇数行の場合は「=0」を「=1」にするだけですね。
※上記の数式は「配列数式」になります。
数式にカーソルがある状態で「Shift + Ctrl + Enter」を押すことで数式が有効になります。
日付のフォーマットチェックです。システムによってフォーマットは異なるかと思いますが
私がよく使うのは「yyyy-mm-dd」です。
1 2 3 4 5 6 7 8 9 10 |
function check_date($caption, $value) { if($value == '') { return null; } $preg = '/^[0-9]{4}-[0-9]{2}-[0-9]{2}$/'; if(!preg_match($preg, $value)) { return "$caption が正しくありません"; } return null; } |
正しければNULLを返します。
SQLインジェクション対策の第一歩として、
SQLの実行にはプリペアドステートメントを徹底したほうがよいでしょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
/* DB接続 */ $db = new PDO('DSN情報', 'ユーザー名', 'パスワード'); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); /* パラメータ */ $param = array('001', 2); /* クエリ実行 */ $stmt = $this->db->prepare('select column1 from table1 where id = ? and type = ?'); try { $stmt->execute($param); } catch(PDOException $e) { /* エラー処理 割愛 */ exit(); } /* データ取得 */ $val = null; while($row = $stmt->fetch(PDO::FETCH_NUM)) { $val = $row[0]; } |