• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:マッチングの簡素化)

マッチングの簡素化

このQ&Aのポイント
  • エクセルVBAで予想数字のマッチングと結果出力を自動化する方法を教えてください。
  • ナンバーズ3やナンバーズ4の予想をする際に、エクセルVBAを使用して予想数字のマッチングと結果のみを表示するシートを作りたいです。
  • 予想数字をシートに貼り付ける作業以外は自動化し、予想数字のマッチング結果のみを表示するエクセルVBAのコーディング方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんばんは! すべて自動とはいきませんが・・・ VBAでの一例です。 ↓の画像でA列が「予想数字」・B列に予想数字をコピー&ペーストするとします。 画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面が出ますので ↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub test() 'この行から Dim i, j As Long Application.ScreenUpdating = False j = Cells(Rows.Count, 3).End(xlUp).Row If j > 1 Then Range(Cells(2, 3), Cells(j, 3)).ClearContents End If For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row If WorksheetFunction.CountIf(Columns(2), Cells(i, 1)) Then Cells(Rows.Count, 3).End(xlUp).Offset(1) = Cells(i, 1) End If Next i Application.ScreenUpdating = True End Sub 'この行まで ※ コマンドボタンを使えば、クリックするだけでマクロを走らせることが可能です。 ご希望の方法でなかったらごめんなさいね。m(_ _)m

moguo4649
質問者

お礼

いつもお世話になります。 早速のご回答ありがとうございます。 私が意図していた形の回答を頂き嬉しいです。 さっそく、試してみます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

回答No.4

>これまでは、VLOOKUP等の関数を使用してましたが、 >毎回、毎回セルに予想数字を貼りつけて、関数も貼りつける作業が >面倒くさくなり、エクセルでシート予想数字の貼り付け後は、 関数を張り付ける作業をマクロの自動記録で記録しても良いと思います。 その後の作業も記録してみてください。 [Alt]+[F11]でプログラムの中身を見てみましょう。 標準モジュール内です。(記録中も見られます)

moguo4649
質問者

お礼

回答ありがとうございます。 マクロの自動記録の方法ですか、 思いつきませんでした。 ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

丸写しすれば仕舞いのような解答は出ているようだが、こんなので、出来ました、といっていると進歩しないよ。 だからコードは書かない。1つの方法でも自力でやって見ては。 ーー 例えば 色々なロジックがあるが (1)探す対象 Sheet1  のA列 (2)探す数字 Sheet2  のA列 として、 (1)Sheet1のA列のセル範囲Rangeが、その作業の都度変わるようだから、最終行(d1)を掴み(このコードぐらいわかるだろう) Range(”A2:A" &d1)でセル範囲が出来る (2)Sheet2のデータも同じく最終行をd2に掴む。 そしてSheet2の2行目から最終行までの各セルをFor Nextで繰り返し検索語にする。 (3)FindメソッドでSheet2の語(1セルの値)でSheet1のA列を検索する。 (4)見つかればそのB列にサインとして1でも立てる。 (5)Sheet2の最終行までFindを実行して、Sheet1でB列に1となってない行を、捜してどこかへ抜き出す ーー (6)そもそも1件の検索はマクロの記録をやってみよ。どういうコードかすぐ判る。これもやっていないで質問しているのか。 (7)見つからない場合の処理は,Googleででも「VBA Find 見つからない」で照会でもしたか。 http://officetanaka.net/excel/vba/cell/cell11.htm ほか多数の記事があるじゃないか。 === ほかのロジックだが、両者ソートして、マッチングのアルゴリズムというのを使う方法(オフラインバッチ処理でよく使われる)があるが、質問者には説明が長くなるので略。わたしも回答に使ったことがあるが。 === 質問は情況を説明するので精一杯のようだ。 ロジックを自分で考え出す訓練をしないと、VBAの文法やメソッドを覚えても先に進めない。 これは経験を積まないと、整理して解説した書物は見つけにくいのだ。 幼稚なロジックでも自分で1方法なり、数日掛けて考えること。WEBに直ぐ質問してはだめ。

moguo4649
質問者

お礼

いつもご指導ありがとうございます。 確かにスキル以上の事を質問していて 回答がすぐ得られるので満足している所はあります。 それは、予想数字を抽出(決定)するための補助として エクセルを使用するという考えがあるので、 1から分厚いエクセルの本を見ても自分がやりたい事がそのまま載っている 訳でなくロジックを1つずつ考えていても終わりが見えないため、 それなら皆様に質問して得た回答で得たい結果が得られればそれで良いと思ってます。 なので、今後もこのような質問はすると思いますがご容赦下さい。 しかし、ご指摘の通り単純なロジックから考える事の積み重ねである事は解っています ので、こちらは、亀のペースで勉強してゆきます。

全文を見る
すると、全ての回答が全文表示されます。
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.1

マスターシートのA列のデータと別シートのA列に貼り付けたデータで重複するデータを抜き出すなら以下のような関数で表示できます。 =IFERROR(SMALL(IF(COUNTIF(マスター!$A$1:$A$1000,Sheet2!$A$1:$A$1000),$A$1:$A$1000),ROW(A1)),"") 配列数式ですので入力後Ctrl+Shift+Enterで確定して適当数オートフィルコピーしてください。 再計算に時間がかかる場合は、Excelのオプションの詳細設定から計算方法を「手動」にして、必要な時に(データをコピー後に)F9キーを押すことで再計算した方が動きが軽くなるので良いと思います。

moguo4649
質問者

お礼

いつもお世話になります。 早速のご回答ありがとうございます。 ちょっと試してみます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルでマッチングが上手く行きません

    エクセル2007を使っています。 マッチングをしても「0」としか表示されません。 何が原因でしょうか? マッチングに使うマスターは、同じブック内にあります。 他の作業でも使っているマッチング用の式を修正して使用しています。 マッチングは、全て数値です。

  • EXCEL 複数シートにおけるマッチング処理

    悩んでいます、添付画像のような3つのEXCELファイルがあり、結果1のような表にマッチング処理したいのですがなかなか考えがまとまりません。おそらく関数では難しくVBAで処理するのだろうかと思いますが経験が浅く手詰まり状態です。恐れ入りますがご指南のほどよろしくお願いします。 1.A列がキー項目となります。 2.表1、2、3とも列数は固定です。 2.表1は行が一意です。(マスター) 3.表2、3は行が複数行存在します。(必ず1行以上は存在します) 4.キー項目に関して表2、3は行数がイコールの場合もありますし異なる場合もあります。 5.上記4の場合、結果1または結果2のように表示したいのです。 5番の要件で苦慮しています。どうかよろしくお願い致します。

  • エクセルVBA 初期処理

    エクセルVBA初心者の中年オヤジです。 あるエクセルブックを開く毎、不必要なシートを削除するための方法を、出来るだけ具体的に教えて下さい。 あるエクセルブックに「検索条件入力・名称マスタ・検索結果」の固定3シートがあります。 検索条件を入力し検索ボタンを押下する事で、別シートから該当データを抽出するのですが、検索条件を変更し検索ボタンを押下する毎に「結果シート」が増えて行く仕様としています。 抽出部分や結果シートのコピー部分の作成、及びクリアボタンを押下した場合の「結果」シート削除のプログラミングは完了しましたが、このエクセルブックを開いた時に、初期処理として全「結果シート」を削除するにはどの様にしたら良いのか教えて下さい。 ブック利用者が「結果シート」を残したまま保存した場合を考慮し、初期処理としてこの全「結果シート」を削除したいのです。 宜しくお願い致します。

  • 抽選結果の桁別ビジュアル化

    どなたかご存じでしたら回答をお願いします。 数字選択式宝くじのナンバーズ3、ナンバーズ4の抽選結果をエクセルに登録しております。 【抽選結果(ナンバーズ3)】  313 457 123 【抽選結果(ナンバーズ4)】 1133 8415 5551  上記結果を見やすくするために桁別に3つに0~9にわけてその桁の抽選結果数字に該当すれば 「○」をつける方法が知りたいです。 また、桁毎に前回の抽選数字と今回の抽選数字を「結線」する方法もあれば教えてください。 【抽選結果(ナンバーズ3)】 N3   0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 313       ○         ○              ○                    457       ○             ○              ○ 123   ○             ○             ○ 【抽選結果(ナンバーズ4)】 N4   0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 1133  ○            ○              ○           ○ 8415           ○       ○        ○               ○ 5551       ○            ○            ○      ○  使用しているエクセルは2007です。 エクセル操作またはVBAのソースで回答願います。 以上

  • VBAでスケジュール表を作成しています

    業務短縮化のために、VBAを使って社内のスケジュール管理ファイルを制作しています。 つくろうとしているのは、こんな感じです。 1、まず、罫線だけのマスター用紙があります。 2、別シートに設置した「スケジュール作成」ボタンをクリックすると、マスター用紙がコピーされ、新しいシートが作成されます。 この新しいシートの「A」列に、自動的にカレンダーが入力されます。 この2の部分をVBAで自動化したいと考えています。 すでにボタン押下→シートをコピーするところはできました。 カレンダーを作るには、月の最終日の日にちと曜日をとればいいのかな?とか予想はしているのですが。。。 手掛かりなどありましたらお願いします

  • VBAによりマッチング操作

    VBAによりマッチング操作 基本的な知識がないので、まずはそこが課題ですが、VBAのコードとしてはどんな形になりますか。 まったくの初心者です (1)2つのファイルがあり共通するキーを照合することにより得られたマスターファイルから得られた係数をもとにトランザイクションデータの各列の係数と掛け算をして、その結果をトランザクションデータのA列からG列とともに別のファイル(シート1)に書き込む。 (2)アンマッチデータは結果の書き込まれたファイルのシート2にトランザクションデータの内容をそのまま書き込むというものです。 (3)トランザクションデータのデータ数は未知ですが、列数は定まっています。 やりことのあらましは以上のようなことです。

  • VLOOKUPで入力結果をマッチングする方法

    こんにちは! 明日仕事でEXCELのVLOOKUPを使って一人でマッチング作業をしなければならなくなったのですが、何をどうすればいいのか全然わからないので、助けてください!! 今日までにバイトの人達2人が同じフォーマットのEXCELのシートにそれぞれに入力してくれていて、明日私のところにそれぞれのシートが届きます。で、2人の入力が間違っていないかどうかをVLOOKUPをかけてマッチングしてほしい、という指示です。 一人で作業をするので周りに聞ける人もいないし、どうしよう。。。(涙)ヒントだけでもけっこうですので、回答よろしくお願いします。

  • 婚活パーティーのマッチング関数について

    お世話になります。 婚活パーティーで、男女それぞれ第1~第3希望までお相手を選んでもらいます。そして1位でも2位でも3位でも関係なく、誰と誰がマッチングしたかを関数で割り出したいです。添付のようなエクセルシート(例)ですが、関数とどの行と行を選ぶなど、初心者でもわかるように教えていただけませんでしょうか。同じ質問も検索に出てくるのですが、なかなか理解できず…どうかどうかよろしくお願いします。

  • Excel VBA ダイアログシートのボタン操作

    お世話になります。 宜しければ、お力をお貸し下さい。 現在、業務にて、ExcelのVBAをやっておりますが、VBAが初めてであること、ダイアログシートについての情報がインターネット等で少ない事から、作業が難航しております。 作業環境は、WindowsXP+Excel2003です。 ダイアログシートにて表示させたダイアログのボタンを押下した後に、押下したボタンを一時的に無効にしたいと考えております。 しかし、下記のようなソースを組みましたが、成功致しませんでした。 Sub Auto_Open()   ThisWorkbooks.Dialogsheets(シート名).Show() '…(1) End Sub Sub Button1_Click() 'ボタン押下時に呼ばれる   ThisWorkbooks.Dialogsheets(シート名).Buttons(ボタン名).Enabled = False '…(2)   '以下、処理が続く End Sub 簡単ではありますが、一部を抜き出しました。 上記を動かしても、ボタンが無効になりませんでした。 また、(2)を(1)の手前にすると、ボタンが無効になったのを確認致しましたので、構文自体は間違いではないと思うのですが… あと、自宅のPCにはExcelがなく、確認が出来ません。 確認が出来るのは、月曜日になってしまいますが、どうかお力をお貸し下さい。 宜しくお願い致します。

  • マッチング処理(1:N)

    はじめまして。cobol(easy)でマッチングしたいのですが、うまくいきません.jclデータなので ファイル内に重複はあります(ソートしても結果うまくいかず) 下記のようにPGしてます。 マスタは修正はいることはないので 1:N N:1マッチングです。 大小(=,<,>)比較ではうまくいかないので (=と^=)でマッチングしないとだめでしょうか? cobol、vbaの命令でも意味わかりますので ロジックのアドバイスいただけないでしょうか? よろしくお願いします。 ======PG=========== 初期リード(マスタ、トラン) メイン処理 do key1 ^= 999999 and key2 ^= 99999 key1 < key2(マスタ:トラン) マスタ出力 マスタ読み込み key1 > key2(マスタ:トラン) トラン出力 トラン読み込み key1 = key2(マスタ:トラン) do key1 = key2 ← key1 not key2 で抜ける マスタリード end-do トランリード end-do =======データ=========== 変更前(マスタ) 0001 //d0001 dd ssssssssss 0002 //dddd2 dd dddddddddd 0003 //d00003 dd 1111111111 0004 //d55454 dd 4444444444 -------------------------------- 変更後(トラン) 0001 //d0001 dd ssssssssss 0002 //dddd33 dd aaaaaaaa 0003 //d00099 dd 88888888 0005 //dd0000 dd 444444444 結果 -------------------------------------- 0002,0003のレコードは変更されている 0005は追加されている

専門家に質問してみよう