[[20240422110019]] 『範囲内で不一致を検索する』(さん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『範囲内で不一致を検索する』(さん)

A列に番号が入力されていて、B列に行先が入力されています。
B列を検索し、違う行先が含まれていた場合A列の番号をメッセージボックスに表示をさせるマクロを作成したいのですが、何を使用し検索をしたらベストなのか分からず、ご教授いただけないでしょうか。

A   B
123 東京A
345 東京A
126 東京B
115 東京A

この場合3行目の126をメッセージボックス表示させるイメージです。

< 使用 Excel:Excel2010、使用 OS:Windows10 >


ベストかどうかはわかりませんが。。。。^^

1.ループと条件分岐の組み合わせ。。。^^;

一案です。m(__)m
(隠居Z) 2024/04/22(月) 11:15:26


隠居Z 様

ご回答ありがとうございます。
ループをあまり使用したことがないのですが、例えばB列に東京Bや東京Cが複数あっても有効的ですか?
(さん) 2024/04/22(月) 11:45:37


 条件付き書式案

 ●適用先
 =$A$1:$A$4

 ●数式
 =COUNTIF($B$1:$B$4,$B1)=1

(通りすがり) 2024/04/22(月) 11:59:21


通りすがり 様
ご回答ありがとうございます。

B列は可変となり、作業するたびに同列へ追加されていきます。(作業は1日に何回も行います)
その都度の最初の行先を基準としたい為、条件付き書式では私の知識では難しく感じます・・・

例:作業開始が東京Bの時は東京Aや東京Cが混ざってしまっていたらメッセージボックスに表示
(検索範囲は新しく追加した番号のみ。という感じです。)

(さん) 2024/04/22(月) 14:44:59


 >「作業開始が東京X」とありますが、これがよく分かりません。
 これを、B1を基準(B1と相違するものを抽出)とするということであれば、

 ●適用先
 =$A$1:$A$100
 仮に100行としているので適当に変更してください。

 ●数式
 =AND($B1<>"",$B1<>$B$1)

 とか。

(通りすがり) 2024/04/22(月) 16:14:37


通りすがり 様

基準がB1となる訳ではありません。

1回目の基準がB1であれば、Aの作業番号数が30になった場合、次の作業での基準がB31になり番号数が10であれば、そのまた次の作業の基準はB41になります。(作業ごとに最終行を取得し、どんどん追加されるようになっています)

作業番号数も固定ではなく都度変わります。最終的にB列には様々な行先の一覧になりますが、
作業回数毎に行先混載がないかチェックをしたいです。

Sheet1 該当する番号読み込み
Sheet2 元データ一覧
Sheet3 番号及び行先一覧控え

Sheet3
1回目→基準B1、番号数30
2回目→基準B31、番号数10
3回目→基準B41、番号数17
4回目→基準B58、番号数・・・

(さん) 2024/04/22(月) 16:46:49


 要求仕様が全く違っていたようです。なので私の投稿は無視してください。
 他の方からの回答をお待ちください。

(通りすがり) 2024/04/22(月) 16:52:12


その作業の流れを説明してもらえませんか。
いつ作業が開始されて、いつ終了するのかとか。
不一致があったらどうするのか、
不一致がなければどうするか、
など。

例えば、

ブックを開いたら、すぐ入力作業を開始。
入力が終了したら「確認」ボタンをクリックして
不一致がないか確認する。

ということなら、
ブックを開いたときに、A列の最終行を取得して
変数かどこかのセルに格納しておく。
「確認」ボタンがクリックされたら、
格納された最終行の次の行の値を基準に不一致がないか調べる。
方法としてはループして不一致の値を文字列変数に追加していく。
それをMsgboxで表示する、
確認後に、最終行を変数かセルに格納しておく。
というようなコーディングになります。

回答するには、
とりあえず明確な仕様が必要です。
(hatena) 2024/04/22(月) 18:08:30


通りすがり 様

せっかくご回答いただけましたのに、私の説明不足で申し訳ございませんでした。

hatena 様

作業の流れは下記の通りです。

1,朝ブックを開く。(Sheet2の元データ一覧は全て条件付き書式により色付けされています。)
2,梱包セットが出来たらSheet1へ番号入力。マクロによりSheet2の元データ一覧の色を消込。
3,2の繰り返し
4,Sheet2の色が全て消えたら作業完了。

下記のマクロの中で行先のチェックを追加したいです。
行先はSheet2のC列にあります。

Sub 反映()

  Dim sws, dws, kbws As Worksheet
  Dim row5, row6, row7 As Long
  Dim i, txt As Long

  Application.ScreenUpdating = False

  Set sws = Worksheets("Sheet1")'番号入力シート
  Set dws = Worksheets("Sheet2")'元データ一覧
  Set kbws = Worksheets("Sheet3")'控えシート

  row5 = sws.Cells(Rows.Count, "B").End(xlUp).Row  'Sheet1の最終行取得
  row6 = dws.Cells(Rows.Count, "A").End(xlUp).Row  'Sheet2の最終行取得

  If row5 <> 1 Then
   For i = 2 To row5
   txt = sws.Range("B" & i)  '検索番号格納

    matchAns = 0
    dws.Select

    matchAns = WorksheetFunction.Match(txt, dws.Range("W2:W" & row6), 0) '検索

     If matchAns <> 0 Then  '一致した場合
        dws.Range("Y" & matchAns + 1) = 1  'Yの欄に「1」を入力
        row7 = kbws.Range("A" & Rows.Count).End(xlUp).Row
        dws.Range("W" & matchAns + 1).Copy kbws.Range("A" & row7 + 1)’番号控え
        dws.Range("C" & matchAns + 1).Copy kbws.Range("B" & row7 + 1) ’行先控え

     ElseIf Err.Number <> 0 Then

        Err.Number = 0  'エラー値初期化
        MsgBox txt & "の該当ありませんでした。"
     End If

   Next
   End If
 Application.ScreenUpdating = True
End Sub
(さん) 2024/04/23(火) 13:36:12

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.