どなたかご存じでしたら回答をお願いします。
ナンバーズ3やナンバーズ4の予想をする上で、
下記の手順でマスターにしか存在しない予想数字を、
ボタンを押下したら、(3)の結果だけが出てくるようにするには
エクセルVBAではどのようなコーディングでできますか?
これまでは、VLOOKUP等の関数を使用してましたが、
毎回、毎回セルに予想数字を貼りつけて、関数も貼りつける作業が
面倒くさくなり、エクセルでシート予想数字の貼り付け後は、
ボタン押下したらマッチング結果がでてくるものが作りたく質問しました。
(1)こだわりの予想数字が入ったシート。【マスター】
:
056
067
078
089
125
126
127
128
129
145
156
167
178
189
235
236
:
(2)WEBサイトにある予想数字を貼りつけたシート【トラン】
:
056
069
083
085
136
138
158
174
178
194
196
236
247
249
269
285
:
(3)(1)に対して(2)の数字をマッチングして(1)のみに存在する結果を出力する。
056
178
236
【注意事項】
・(1)、(2)ともそれぞれの予想数字の中には重複は無しとします。
・(1)、(2)とも昇順に並べてある状態とします。
・(1)、(2)とも件数は最大999件とします。
・(1)、(2)、(3)それぞれシートは別れていても、同じ1枚のシートでもどちらでもよいです。
・エクセルVBAと言いましたが、予想数字をシートに貼り付ける作業以外は自動になれば
やり方は問いません。
・エクセル2007を使用します。
以上、よろしくお願いします。
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
いつもお世話になります。
早速のご回答ありがとうございます。
私が意図していた形の回答を頂き嬉しいです。
さっそく、試してみます。
No.4
- 回答日時:
>これまでは、VLOOKUP等の関数を使用してましたが、
>毎回、毎回セルに予想数字を貼りつけて、関数も貼りつける作業が
>面倒くさくなり、エクセルでシート予想数字の貼り付け後は、
関数を張り付ける作業をマクロの自動記録で記録しても良いと思います。
その後の作業も記録してみてください。
[Alt]+[F11]でプログラムの中身を見てみましょう。
標準モジュール内です。(記録中も見られます)
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に直ぐ質問してはだめ。
いつもご指導ありがとうございます。
確かにスキル以上の事を質問していて
回答がすぐ得られるので満足している所はあります。
それは、予想数字を抽出(決定)するための補助として
エクセルを使用するという考えがあるので、
1から分厚いエクセルの本を見ても自分がやりたい事がそのまま載っている
訳でなくロジックを1つずつ考えていても終わりが見えないため、
それなら皆様に質問して得た回答で得たい結果が得られればそれで良いと思ってます。
なので、今後もこのような質問はすると思いますがご容赦下さい。
しかし、ご指摘の通り単純なロジックから考える事の積み重ねである事は解っています
ので、こちらは、亀のペースで勉強してゆきます。
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キーを押すことで再計算した方が動きが軽くなるので良いと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルで”入力シート”の文字書式の変更を”出力シート”で同じ文字書式で印刷したいです。VBA希望 4 2023/04/24 11:07
- Excel(エクセル) Excel関数について質問です。 シート1に入力シートがあります。 =A1 =B1などで離れた数字な 5 2022/12/18 13:42
- Visual Basic(VBA) エクセルマクロでアニメを作る方法を教えてください。 1 2023/02/07 14:27
- Excel(エクセル) 前の(左隣の)シートを連続参照するように、あとから変更したい 1 2023/02/22 00:51
- 教育学 エクセルで小数点以下を四捨五入について教えてください。 2 2023/04/05 17:33
- Visual Basic(VBA) VBAで、1つのエクセルで、2つのシートからもう1つのシートに条件のある転記コードを教えてください。 1 2023/03/16 18:07
- Visual Basic(VBA) ExcelのVBAを使い、複数シートの同一箇所を、同一条件にて一括でソルバーを回す方法について 1 2022/04/23 11:49
- Visual Basic(VBA) EXCEL VBA 単語置き換え について質問です ブック名 ぶぶぶ シート名 ししし セル V3〜 3 2023/03/08 01:41
- Excel(エクセル) エクセル関数について 2 2022/04/13 18:25
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【関数】適切な文字数の数字を...
-
【関数】先頭だけにある、半角...
-
Excelのチェックボックスの使い...
-
エクセル 白黒印刷で白線を印刷...
-
LOOKUP関数を使えばいいのでし...
-
エクセルのセルに同じ大きさの...
-
エクセルの関数について教えて...
-
時間によってファイル名が変わ...
-
Excelのpivotについて質問です
-
excelの不要な行の削除ができな...
-
Excelで、決まった行を繰り返し...
-
WPS OFFICEでの縦書きについて
-
UNIQUE関数が使えないバージョ...
-
エクセルの条件付き書式につい...
-
エクセルで「-0.0」と表示さ...
-
Aというブックの1というシート...
-
VBA Private Sub Worksheet_Cha...
-
【マクロ】ファイル名の変更に...
-
【マクロ】エクセルにかいてあ...
-
excel で二つのどちらかを選ぶ
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
[関数得意な方]教えて下さい・...
-
Excelにてある膨大なデータを管...
-
[関数について]わかる方教えて...
-
Excel初心者です。 詳しい方、...
-
excelの不要な行の削除ができな...
-
エクセル関数に詳しい方教えて...
-
INDIRECTを使わず excelで複数...
-
[オートフィルタ]で抽出された...
-
エクセルの神よ、ご回答を! エ...
-
エクセル関数に詳しい方、教え...
-
各ページの1番上の表示について
-
Excelで写真のような表を作った...
-
エクセルで不等号記号(≠)が上に...
-
数学 Tan(θ)-1/Cos(θ)について...
-
Excel 2019 は、SPILL機能があ...
-
Excelで全角を半角にしたいので...
-
条件付き書式を教えてください
-
Excel フィルターを掛けた状態...
-
[オートフィルタ]の適用範囲の...
おすすめ情報