アフィリエイト広告を利用しています

2021年09月07日

ExcelのIF関数で複数の条件を指定する

A列のデータ文字列の先頭がRのとき、2文字目以降を抽出する式


 =IF(LEFT(A2,1)="R"),INT(MID(A2,2,10)))

 注)式ではA2だが、A2からA2000ぐらいまでこの式を定義している。

Rだけでなく、Aもあることが分かったので、RまたはAとした。


 =IF(OR(LEFT(A2,1)="R",LEFT(A2,1)="A"),INT(MID(A2,2,10)))


先頭文字がRで、2文字目がAというように両方の条件を満たす場合はANDを使う。


 =IF(AND(LEFT(A2,1)="R",MID(A2,2,1)="A"),INT(MID(A2,2,10)))


ORやANDを先に指定するのがポイント。

 LEFT(A2,1)="R" OR LEFT(A2,1)="A" としては駄目。

条件が3つのときはORの後ろの条件式をもう一つ追加する。

 =IF(OR(LEFT(A2,1)="R",LEFT(A2,1)="A",LEFT(A2,1)="B"),),INT(MID(A2,2,10)))









posted by db-engineer at 00:00 | Comment(0) | Access、Excel

2020年09月25日

Accessのエラートラップ

Accessのエラートラップ


 Dim strErrMsg as String
 On Error GoTo ErrorTrap
 ・
 ・

 ExitTrap:
 Exit Sub

 ErrorTrap:
 strErrMsg = Err.Number & ":" & Err.Description
 MsgBox strErrMsg, vbExclamation + vbOKOnly, cnstSystemName
 Resume ExitTrap


注意)サブプロシージャを使用しています。

Err.Number に応じて処理を分岐させることもできる。

あるエラー(エラー番号がxxxx)のときだけ、処理を継続する場合


 Dim strErrMsg as String
 On Error GoTo ErrorTrap
 ・
 ・

 ExitTrap:
 Exit Sub

 ErrorTrap:
  If Err.Number = xxx THEN
  Resume Next
  End IF
 strErrMsg = Err.Number & ":" & Err.Description
 MsgBox strErrMsg, vbExclamation + vbOKOnly, cnstSystemName
 Resume ExitTrap










posted by db-engineer at 00:00 | Comment(0) | Access、Excel

2020年09月24日

手軽にSQLを実行する

Accessで簡単なSQL文を実行したくなったときに、

プロシージャで実行する。


Dim Sql As String

Sql = "UPDATE tablename SET columnname = 値 WHERE 条件"
DoCmd.RunSQL SQL


実行前に確認するには、

Dim Sql As String
 Dim Ret As Integer

Ret = MsgBox("UPDATEコマンドを実行しますか?", vbYesNo, "確認")
If Ret <> 6 Then
MsgBox ("中止しました。")
Exit Sub
End If

Sql = "UPDATE tablename SET columnname = 値 WHERE 条件"
DoCmd.RunSQL SQL
 MsgBox ("終了しました。")


注)Subプロシージャに記述しています。

クエリーだけにたよるとクエリーの数が多くなりすぎるので、

プロシージャも使用したい。








posted by db-engineer at 00:00 | Comment(0) | Access、Excel

2020年07月21日

Excel vba での開発を支援するローカルウィンドウ

変数、配列の値を確認できるのでデバッグにたいへん便利。


実行中にエラーが発生すると、

その時点での変数、配列の値がローカルウィンドウ内に自動的に表示されます。

local_window.png

エラー発生時以外に確認する方法は2つあります。

@ブレークポイントの指定

 実行を中断した時点の変数、配列の値が表示されます。

AStopコマンド

 Stopコマンドで処理が中断し、その時点の値が表示されます。


ローカルウィンドウをイミディエイトウィンドウと併せて使用すれば

Excel vbaでの開発は間違いなくスピードアップする。







posted by db-engineer at 00:00 | Comment(0) | Access、Excel

2020年02月26日

is null と = ""

ある項目で同じデータが何件あるか集計していた。

 A ‥‥ 30件
 B ‥‥ 25件
 C ‥‥ 20件
 空‥‥ 10件

こんな感じ。日を改めて実行すると、こんなになった。

 A ‥‥ 30件
 B ‥‥ 25件
 C ‥‥ 20件
 空‥‥ 8件
 空‥‥ 2件

戸惑いながらも原因を調べると

空データの内、8件は ="" で検索できて、2件は is null で検索できた。

こうなった原因を調べるのは後回しにして、

とにかく、以前の状態に戻して空データは10件と集計されるようにしたい。

トライ & エラー


is null で検索できる2件に

半角スペースを登録して削除してみた。

スペースではなく、アルファベットを登録して削除してみた。

ともに結果は変わらない。is null で検索できて、="" では検索できない。

ググってみた。


Webで検索すると答えが見つかった。

ダブルクォーテションを二つ、"" を登録すると画面には何も表示されないが

="" で検索できるようになった。








posted by db-engineer at 00:00 | Comment(0) | Access、Excel

最新記事
検索
カテゴリーアーカイブ
プロフィール
db-engineerさんの画像
db-engineer
プロフィール
タグクラウド