アナログCPU:5108843109

ゲームと音楽とプログラミング(酒と女とロックンロールのノリで)

2016-11-29から1日間の記事一覧

整数かどうか、またその範囲をチェックする関数

整数かどうかを一発チェックしてくれる関数を探していたのですが見つからず。 …えっ、本当にない…? いやあるでしょ…? しかし見つからなかったので、とりあえず作りました。誰か知ってたら教えてください。せっかくなので範囲チェックもやってくれるオマケ…

ブックを開くとき/閉じるときの処理

普通どおり標準モジュールにマクロを作るとき、プロシージャ名を 「Auto_Open」にすればブックを開いたとき、 「Auto_Close」にすれば閉じるときに そのプロシージャが起動します。「ブックを開いたら今日のおみくじを表示」みたいなお遊びから 「閉じる前に…

301 VS 302

開発中のサイトで、https://でアクセスされたらhttp://にリダイレクトしたり その逆をやったり、という事案があり、リダイレクトについて諸々調べてたので残しておきます。 HTTPステータスコード リダイレクトをかます時に、HTTPステータスコードを乗っける…

シートの存在を調べて存在しなければ新しいシートを作成

頻繁に使うロジックなので関数化してみました。 任意の名称を持つシートが存在するかどうか調べる 上記で存在しなければその名称で作成(もしくはあるシートをコピーしてその名称にする) ' 呼び出し例(1) Dim wsSheet As Worksheet Set wsSheet = SelectShe…

日時を扱ういろいろ PHP版

PHP

PHPでの日時の扱いについてですが、INT型のUnixタイムスタンプを用いるのが基本です。例えば現在の日時を「YYYY-MM-DD hh:mm:ss」という形で求める場合、 $datetime = date("Y-m-d H:i:s", time()) とします。 time()で現在のUnixタイムスタンプを取得し、そ…

日時を扱ういろいろ MySQL版

MySQL。 現在日時の取得 -- YYYY-MM-DD hh:mm:ss SELECT NOW() 月の最終日の取得 -- 2013-06-10 を渡すと 2013-06-30 SELECT LAST_DAY(日付) フォーマットして取得 SELECT DATE_FORMAT(日付, フォーマット) フォーマット部分 %Y 西暦年(4桁) %y 西暦年(2桁) …

マルチバイト文字列関数の罠

ある時、CSVのデータをインポートする処理で不具合が発生。 「2件のデータをまとめてインポートすると1件のみ失敗して、 成功したデータを除いて再度その1件のみをインポートすると成功した」 いやいやそんなアホな。色々調べた結果、この結論に至りました。…

文字列のトリム(左端・右端にある特定の文字列を削除 )

以下MySQLで確認していますが、Oracle・PostgreSQLでも同じ書き方である模様。例えば都道府県欄に「○○県」と入っており「県」は除いて表示したい場合など、は以下のようにします。 SELECT TRIM(オプション 削除する文字列 FROM フィールド名) FROM テーブル…

【ネタ】手作りソート

何やら「A1:A10に入力された数値データを昇順に並び変えてB1:B10に格納せよ」という学校の課題的なお題を頂いたので作ってみました。 もちろんソート機能は使用禁止です。 (つまり実務で使う意味は皆無のネタコードです) Option Explicit 'ソート範囲 Cons…

ブックの共有

共有フォルダ等に置いてあるファイルは他人が開いてると変更を保存できなかったりしますが、 それを誰が開いていようが同時に更新しようが大丈夫になるやつ。 実務ではテスト項目表・障害管理表などに使うと吉。 そういうのをExcelで管理する奴は殺せと言っ…

ワークシートの最大行数、最大列数を取得

最大行数は Rows.Count 最大列数は Columns.Count で取得できます。 ' 使用例(1):「Sheet1」シートの全セルのデータや書式設定を削除 With ThisWorkbook.Sheets("Sheet1") Range(Cells(1, 1), Cells(Rows.Count, Columns.Count)).Clear End With ' 使用例(2…

ボタンひとつで簡易grep

何度もgrepをかけるとき、いちいちウインドウ出てくることや 検索フォルダが「今開いているファイルの位置」になるのが非常に鬱陶しいので、 「あらかじめ指定されたフォルダ以下にて今選択している文字列をgrep」するマクロを作りました。 ショートカットキ…

VBAでセルの結合

セルを結合するには、MeageCellsプロパティを用います。 ' A1~C3のセルを結合 Range("A1:C3").MergeCells = True '現在選択している範囲を結合 Selection.MergeCells = True ここで、結合したいセルのうち2つ以上にデータが入っていると、警告が表示されま…

頭文字検索

用語集みたいなやつを作っていて、「あ行」「か行」…「英数字」という頭文字検索があったので、 調べてみたところLIKEかREGEXPが使えそうかなと思ったのですが…LIKE →複雑な正規表現は使用不可 →日本語に対応REGEXP →正規表現使用可 →日本語に非対応でした。…

フィールドの順序を変更する

以下、MySQLで確認。あるテーブルで、フィールドが「field_a」「field_b」がこの順に存在し、これを入れ替えたいときは以下のようにします。 ALTER TABLE テーブル名 MODIFY COLUMN `field_a` 型名 AFTER `field_b`;

テーブルの再構築

MySQLの話。いつもは速いクエリが突然やたらと遅くなったので調べてみると、何故か適切なインデックスが使用されなくなっていた模様。 とりあえずインデックスを一旦削除して張り直すと戻りました。 (FORCE INDEX なんかも知ってはいますが、リリース済みの…

ランダム文字列を生成する関数

以前に同タイトルの記事を書きましたがこちらはPHP版。↓こちらはVBA版。まあこちらも基本ロジックは一緒なんですが…honey8823.hateblo.jp private function makeRandomStr($strlen = 1) { // 使用可能な文字一覧 $randomstr = "abcdefghijklmnopqrstuvwxyz12…

複雑な条件でGROUP BYする

以下MySQLで確認。下記Aのテーブルについて、 「idが4未満と4以上のグループに分けて、それぞれで一番小さいvalueをSELECT」 してBの結果が欲しいとき…(A)test_table id value 1 68 2 15 3 32 4 19 5 73 6 59 (B) 15 19 苦し紛れに以下のようなクエリを書い…

Excelでよく使うショートカットキー

Excelのショートカットキーのうち、個人的によく使うものやすっかり忘れてたけどそういや便利だったわと思ったものをメモ。 自動入力系 ものすごく便利。 意外と知られていないのですがおすすめ。 「Ctrl」+「D」上のセルのコピー(クリップボード非使用) …

特定の文字以降を別の文字列に置き換える

具体的には、「メールアドレスの@以降を*でマスクする」ロジック。 文字列処理の関数を多数使用できて面白かったのでメモ。 ただ、PHPならもっと簡単なロジックが作れそうな気も…? // 加工前のメールアドレス $mail_address = "hoge@fuga.com"; // 加工後の…