お世話になります。
A 早単
A 単
というデータがあります。
このデータはData1,Data2の変数にそれぞれ入ってます。
IF 文をつかって
IF If data Like ”A" & "*[!早単]" Then
処理1
End IF
IF If data Like ”A" & "*[!単]" Then
処理2
End IF
と二つに処理をわけたいのですが、
実行するとデータ A 早単
データ A 単
の場合でも処理1、処理2を実行して
二重に実行してしまいます。
これを別々に処理に分けることは
可能なのでしょうか?
宜しくお願いします。
No.1ベストアンサー
- 回答日時:
if 「A」 then
「A」が成立したときの処理
elseif 「B」 then
(「A」が不成立で)「B」が成立したときの処理
elseif 「C」 then
(「A」「B」ともに不成立で)「C」が成立したときの処理
...
と、 elseif を使うことで、「条件を順番に調べて、最初に成立したものだけ実行」ということはできます。
ただ、条件はそれで正しいですか?
IF If data Like ”A" & "*[!早単]" Then
で 、if が2つ続いている、dataというData1でもData2でも無い変数(?)になっている、というのは入力間違いでしょうか?
[!早単] という表現は 「早単 という文字列ではない」 という意味ではなく、 「 早 でも 単 でも無い1文字」という意味ですが、それが期待する答えなのでしょうか?
どういう判定をさせたいのか、一度見直しましょう。
No.5
- 回答日時:
こんにちは。
わざわざ、私の書いたことに、返事を付けていただきありがとうこざいます。
>定 担.... 13時間
>定 早担.... 11時間
例:
A B C
1 定 担 13
2 定 早担 11
こういう場合は、より条件の細かい方を先にするという方法を使いますが、以下のLike演算子のマッチング・パターンそれぞれでは厳密な区分けは出来ていません。便宜上、より条件の多いものから抜き出すということで、ふるい分けができるだけです。
Sub UsingLikeOperation()
Dim i As Long
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
If Trim(Cells(i, 2).Value) Like "*早担" Then
Cells(i, 3).Value = 11
ElseIf Trim(Cells(i, 2).Value) Like "*担" Then
Cells(i, 3).Value = 13
Else
'別な条件
End If
Next i
End Sub
もちろん、以下も同様に、正しく演算子のマッチング・パターンは出来てはいません。
Sub UsingLikeOperation2()
Dim i As Long
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
If Trim(Cells(i, 2).Value) Like "[!早]担" Then
Cells(i, 3).Value = 13
ElseIf Trim(Cells(i, 2).Value) Like "*早担" Then
Cells(i, 3).Value = 11
Else
'別な条件
End If
Next i
End Sub
No.4
- 回答日時:
一言、よこやり、いれさせていただきます。
>likeの後の文字Aの部分は
>本当は変数を入れたいので
>like 変数A & ?? 【早単】
>とするつもりだったので
どう考えても、レストランで調理後に出てきたオーダーの食べ方を聞いているだけで、一体、何の注文をしているのか、聞いていません。そういう状態なら、いくらでも話をひっくり返せます。
ご質問者さんは、Like演算子が得意なわけではないから、お聞きになっているわけですよね。
でも、何を判定させて分岐させたいのかは、書かれていません。その一例でも分からない限りは、私なら、答えの書きようがないと思うのです。
>A 早単
>A 単
質問に出されていた内容は変わって、このAは変数だと言うわけです。
どういう文字列を判定で分けたいのか、ということです。
回答者側は、その内容に対して、その規則性を見いだせるのかできないか、ということです。
それに、「早単」が末尾に来るのか、末尾は「早」か「単」のどちらかなのか、「早単」という並びなのか、一言もご質問者さんが触れていないのに、構文などできるはずがありませんね。
No.3
- 回答日時:
たとえば
Var = "A"
If Data Like Var & "*早単*" Then
MsgBox "処理1"
ElseIf Data Like Var & "*単*" Then
MsgBox "処理2"
Else
MsgBox "処理3"
End If
No.2
- 回答日時:
EXCEL VBAのLIKEは正規表現ではないみたいですね
それでも
「Like ”A" & "*[!早単]"」だと「Like ”A*[!早単]"」となるので
おかしくないですか?せめて「Like ”A [!早単]*"」的な?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) vbaのループ処理について 6 2022/05/06 15:35
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- PostgreSQL DBFluteについて質問です。 環境:PostgreSQL java8 前提:webアプリケーショ 1 2022/07/07 00:49
- Visual Basic(VBA) 【VBA】Excelで罫線を引きたい 3 2022/07/14 12:04
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) VBA 参照先で選んだファイルをコピーし、出力先に別名で保存したい 8 2022/05/13 20:37
- Visual Basic(VBA) VBAでのループ順序について 3 2023/03/13 10:55
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「ご処理進めて頂きますようお...
-
エクセルで、日付を入力すると...
-
VBAでループ内で使う変数名を可...
-
メルカリのメルカードで買い物...
-
DoEventsがやはり分からない
-
【Excel】特定の文字を含むセル...
-
switch の範囲指定
-
リョウ・・・量?料?
-
VBA SaveChanges 上書きされない
-
VBの質問#if 0 then ってどう...
-
EXCEL VBA マクロ 実行する度に...
-
iD
-
UMLでの例外処理
-
Do~Loopした回数をカウントしたい
-
2重のDo~Loopは?
-
VBAのユーザーフォームのテキストボックス...
-
VBAでセルに値が入力されるまで...
-
SQL副問合せを使う理由
-
セルの値が0はクリアするマクロ
-
Select Case文でこのようなこと...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「ご処理進めて頂きますようお...
-
メルカリのメルカードで買い物...
-
エクセルで、日付を入力すると...
-
VBAでループ内で使う変数名を可...
-
【Excel】特定の文字を含むセル...
-
EXCEL VBA マクロ 実行する度に...
-
DoEventsがやはり分からない
-
UMLでの例外処理
-
月度は何て読みますか?
-
switch の範囲指定
-
VBの質問#if 0 then ってどう...
-
セルの値が0はクリアするマクロ
-
VB.NET Excelを読み込んでDataT...
-
Do~Loopした回数をカウントしたい
-
Loadイベント中にほかのイベン...
-
Select Case文でこのようなこと...
-
findは動くがfindnextがマクロ...
-
緊急です。 知り合いから50kgの...
-
リョウ・・・量?料?
-
理不尽、行き場のないイライラ...
おすすめ情報
回答ありがとうございます。
dataはdata1かdata2の
どちらかを入れる変数のことです。
説明不足ですいません。
データがA 単の場合、
処理1、処理2のif分を
どちらも通ってしまい困っています。
処理2だけ通したいのです。
宜しくお願いします。
回答ありがとうございます。
すいません、likeの条件式
間違ってました
!マークなしでお願いします。
likeの後の文字Aの部分は
本当は変数を入れたいので
like 変数A & ✳︎ 【早単】
とするつもりだったので
こんな書き方をしました。
データがA 単の場合に
処理1.2 どちらも通るので困ってます。
処理2のみ通したいです。
宜しくお願いします。
likeの後の文字Aの部分は
本当は変数を入れたいので
like 変数A & ✳︎ 【早単】
とするつもりだったので
こんな書き方をしました。
データがA 単の場合に
処理1.2 どちらも通るので困ってます。
処理2のみ通したいです。
宜しくお願いします。
質問のlikeの条件式の
!マークなしで
お願いします。
間違ってましたすいません。
お世話になります。
説明不足で申し訳ありません。
月の仕事の出勤の予定から
月の予定業務時間を計算する
ものを考えてます。
出勤 1日目 定時出勤で夜担当ありの
場合は出勤簿に定 担と
入力します。
出勤 2日目 定時出勤で早上がりの
夜担当ありの場合は出勤
簿に定 早担と入力します。
業務時間
定 担 13時間
定 早担 11時間
この場合は私の考えたlike演算子
では定 早担のデータが定 担の
ifの処理に入り13時間足されて
しまいます。
どのようにlike演算子の
条件変えたら正常に11時間足される
ようになるのかが分からないので
困っているところです。
宜しくお願いします。