この広告は30日以上更新がないブログに表示されております。
新規記事の投稿を行うことで、非表示にすることが可能です。
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)))
=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)))
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
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
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プロシージャに記述しています。
クエリーだけにたよるとクエリーの数が多くなりすぎるので、
プロシージャも使用したい。
プロシージャで実行する。
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プロシージャに記述しています。
クエリーだけにたよるとクエリーの数が多くなりすぎるので、
プロシージャも使用したい。
2020年07月21日
Excel vba での開発を支援するローカルウィンドウ
変数、配列の値を確認できるのでデバッグにたいへん便利。
実行中にエラーが発生すると、
その時点での変数、配列の値がローカルウィンドウ内に自動的に表示されます。
エラー発生時以外に確認する方法は2つあります。
?@ブレークポイントの指定
実行を中断した時点の変数、配列の値が表示されます。
?AStopコマンド
Stopコマンドで処理が中断し、その時点の値が表示されます。
ローカルウィンドウをイミディエイトウィンドウと併せて使用すれば
Excel vbaでの開発は間違いなくスピードアップする。
実行中にエラーが発生すると、
その時点での変数、配列の値がローカルウィンドウ内に自動的に表示されます。

エラー発生時以外に確認する方法は2つあります。
?@ブレークポイントの指定
実行を中断した時点の変数、配列の値が表示されます。
?AStopコマンド
Stopコマンドで処理が中断し、その時点の値が表示されます。
ローカルウィンドウをイミディエイトウィンドウと併せて使用すれば
Excel vbaでの開発は間違いなくスピードアップする。
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で検索すると答えが見つかった。
ダブルクォーテションを二つ、"" を登録すると画面には何も表示されないが
="" で検索できるようになった。
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で検索すると答えが見つかった。
ダブルクォーテションを二つ、"" を登録すると画面には何も表示されないが
="" で検索できるようになった。