EXCELでCOUNTIFやCOUNTIFSなどで空欄以外を判定するには条件欄に”<>”と入力することで判定が可能となります。
Excelで空欄以外を判定する方法
以下の表の状態欄の空欄以外をカウントする例です。
E4セルの書式には「=COUNTIF(C3:C9,”<>”)」を指定してます。
EXCELには文字列で指定した値をセル参照できる「INDIRECT」関数があります。
このINDIRECT関数を使用することで別々の列にキーとなるIDが指定されているような場合などでは、
VLOOKUPだけだとキーに指定しずらくなりますがINDIRECTと組み合わせて使用すると便利になったりします。
以下の表の場合、A列とB列に別々のIDが指定されています。
一旦C列にIDが記載されているセル番地を入力し、D列でC列の値をINDIRECTで参照しています。
ここまでやれば後は商品マスタ(B9:C11)からVLOOKUPで簡単に取得することが出来ます。
|
1 |
=INDIRECT(参照文字列,参照形式) |
参照形式(任意指定):TRUE(A1形式)、FALSE(R1C1形式)
イメージマップを作成した時、リンクする範囲の座標を指定する必要がありますが、この座標を簡単に取得できるサイト「HTML Imagemap Generator」の使用方法をご紹介します。
SQLで全角文字と半角文字を判定するにはLENGTHBやOCTET_LENGTH関数で取得したバイト数とLENGTH関数で取得した文字数を比較することで判断することができます。
ORACLEの場合はOCTET_LENGTHをLENGTHBへ変更すれば同様の結果を得られます。
|
1 2 3 4 |
SELECT SELECT name FROM goods WHERE name is NOT NULL AND LENGTH(name) <> OCTET_LENGTH(name); |
全角文字・半角文字を判定する目的として、データ品質管理(例:ユーザー登録時の文字種チェック)、システム移行時の文字コード整合性確認、レポートや印刷用データの整形などが考えられます。
特にマルチバイト文字(日本語)環境では、1文字あたりのバイト長が異なるため、バイト長と文字数のずれを利用した判定が有効です。
本記事で紹介されているように、例えば PostgreSQL の LENGTH() と OCTET_LENGTH() の比較を使う方法はシンプルでクロスプラットフォームにも応用可能です。
PostgreSQL:文字数を返す LENGTH(text)、バイト長を返す OCTET_LENGTH(text) を使う。
例:WHERE length(col) <> octet_length(col)
Oracle:Oracle には直接 OCTET_LENGTH がないが、LENGTHB() がバイト長を、LENGTH() が文字数を返す(ただしCHAR型/NCHAR型、CHARSET設定によって挙動が異なる)ので、LENGTHB(col) <> LENGTH(col) という書き方が使えます。
MySQL:CHAR_LENGTH(col) が文字数、LENGTH(col) がバイト数を返すので、CHAR_LENGTH(col) <> LENGTH(col) といった判定が可能。
SQL Server:LEN() が文字数(末尾の空白はカウントされない)、DATALENGTH() がバイト長(文字コード依存)を返すので、環境次第では LEN(col) * 2 <> DATALENGTH(col) などと併用するケースがあります。
注意点として、文字コード(UTF-8、UTF‐16、Shift_JIS 等)が環境によって異なると「半角=1バイト」「全角=2バイト」という前提が崩れる場合があります。特にUTF-8では日本語全角文字が3バイトある場合もありますので、バイト数の比較ロジックを適用する際は対象の文字コードを意識してください。
大規模テーブルでこのようなチェックを行う場合、たとえば WHERE LENGTH(col) <> OCTET_LENGTH(col) のような関数を大量の行に対して実行するとインデックスが効かず、全表スキャンになる可能性があります。
解決策:バッチ処理的に時間帯を分けて実施、あるいはチェック専用にサマリテーブルを用意する。
また、事前に「文字種/文字コード/想定バイト数」などのデータ仕様を設け、そもそも混在しないように制御するのが望ましいです。
判定だけでなく、誰がいつどのレコードを修正したか(=トレーサビリティ)を残すなら、更新日時・更新者カラムを活用して「チェック済み/要修正」などのフラグを設けると管理しやすくなります。
将来的に正規表現(REGEXP)や文字列関数(例えば Unicode プロパティを利用した判定)を使って「半角カタカナ」「全角英数字」「漢字のみ」などより細かく制御したい場合も多いため、可能ならその準備もしておくと良いでしょう。
前提として「文字数とバイト数が異なる=全角含む」という仮定をしているため、 半角カタカナ や 絵文字(マルチバイト4バイトなど) が含まれていると誤検知される可能性があります。たとえば、UTF-8環境で絵文字が4バイトなので「文字数1、バイト数4」→「異なる」と判定されてしまう。
文字コード設定の違い:テーブル/カラムごとに異なる照合順序・文字セットが指定されていると、バイト数や文字数の挙動が予想と異なることがあります。例えば MySQL で utf8mb4 を使っているなら日本語全角文字が3バイトではなく4バイトになるケースあり。
更新系の処理で「半角に変換された/全角に変換された」履歴を残していないため、修正したデータが「元はどちらだったか」が分からなくなるという運用上のリスク。必要に応じて「修正前の値」保持やログ出力を検討するべきです。
正規表現を用いて「全角ひらがな」「全角カタカナ」「全角英数字」「半角英数字」などを分類・抽出する方法。
文字種に応じて別テーブルへアーカイブ・除外といったワークフロー設計。
BI/レポート用途で「文字種別カウント」を可視化する方法(例:Excel/Tableau/BIツールを用いた文字種分布グラフ化)。
外部システム(CSV/Excel)からデータインポート時に「文字種チェック+自動整形(全角→半角、半角→全角)」を組み込むETL(Extract-Transform-Load)設計。
将来的に多言語対応を視野に入れた「Unicodeカテゴリ判定」(たとえば、CJK文字・ラテン文字・Emoji など)を含めた文字種チェック。
SQLでバイト数を取得する場合は、LENGTHBやOCTET_LENGTH関数を使用することで取得出来ます。
DBMS毎に使用できる関数が異なり、ORACLEではLENGTHB、MYSQLやPostgreSQLではOCTET_LENGTH、AccessではLENBが使用できます。
| DBMS | バイト数を取得できる関数 | 備考 |
|---|---|---|
| ORACLE | LENGTHB | ・全角文字の場合には使用しているキャラクタセットによりバイト数は異なる ※UTF-8 の場合には全角文字1文字が3バイト ・ CLOB と NCLOB において LENGTHB は使用できない |
| MYSQL or PostgreSQL | OCTET_LENGTH | |
| Access | LENB | |
| SQLServer | 対象なし |
.htaccessファイルを記述する際、リダイレクトやリライトの記述が複数ある場合は、まずスコープが小さい(限定的な)ルールを先に記述後、適用範囲の広い(一般的な)ルールを記載するのが妥当。
|
1 |
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/js application/x-javascript application/javascript |
|
1 2 3 4 5 6 7 8 9 |
<IfModule mod_rewrite.c> RewriteEngine On RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> |
|
1 2 3 4 5 6 7 8 9 10 |
<IfModule mod_rewrite.c> AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/js application/x-javascript application/javascript RewriteEngine On RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> |
当サイトで投稿した記事は公開時に自動ツイートされるように「WP to Twitter」というプラグインで設定していたのですが、いつの間にかtwitter側の仕様に変更がありプラグインを利用するにはtwitterの開発者アカウントの取得が必要になって申請していました。
申請後、以下の質問がtwitter側から送られてきたので、今後申請する方は下記事項を明確にして申請すれば一発で通りやすいかと思います。
- Twitter APIを使用する中核的な使用目的、意図、ビジネス上の目的。
- ツイート、Twitterアカウント、
またはそのコンテンツを分析する場合は、 実施する分析の内容と手法または技術について詳しくお教えくださ い。 - ツイート、リツイート、いいねの使用が含まれる場合は、
Twitterアカウントまたはそのコンテンツに対してどのよう な操作を行うのかをお教えください。 - TwitterコンテンツをTwitter以外で表示する場合は
、お客さまの製品またはサービスで、 ツイートおよびTwitterコンテンツがどこにどのように表示 されるかを、 行レベルの表示か集計表示かを含めてご説明願います。
返信は日本語でしましたが、無事申請通りました(*^^*)
しばらくJavaのバージョンアップを実施してなかったのでバージョンアップ時の手順をメモしておきます。
今回はJava 1.6.0_45 ⇒1.8.0_331へバージョンアップしてみます。
※2022年5月時点でJavaの最新バージョンは18ですが開発で使用してるのは8なので今回最新版にはしてません。