エクセル の学校
8.一覧 9.HOME
1.Top 2.Last

[[20240422110019]]

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

|
| 全文検索 | 過去ログ | エクセルの学校HOME ]

 

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

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




[ 一覧(最新更新順) |

]

キーボードヒント:[Home]または[Fn+Home]キーで一番上へ戻ります

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