表題の件で、苦戦しています。
まず2つのシートがありまして下記のようになっています。
1シート目
No 内容
1 おはよう
2 こんにちわ
3 こんばんわ
(コントロール1:オプションボックス A or B or C)
(コントロール2:実行ボタン)
2シート目(更新後)
No グループ 内容
1 B
2 B
3 B
1 C おはよう
2 C こんにちわ
3 C こんばんわ
★やりたいこと
1シート目でコントロール1を「C」としてコントロール2の実行ボタンをおした際、2シート目のグループを検索し一致した「No」&「グループ」の箇所にそれぞれの「内容」を代入する。
また「A」はALL扱いとして、グループは無視し、一致した「No」の箇所に
それぞれ「内容」を代入する。
以上です。ぜひとも宜しくお願いします。
No.2ベストアンサー
- 回答日時:
#1です。
提示されたコードを読んでも解らない部分があり、意味が違うかも知れません。
こちらで試したテスト環境を書きますので、試す場合は同様の環境で試して見て下さい。
1)シート名 Sheet1 の A1:B4 に下記リストがあり、1行目はタイトル行とする。
No 内容
1 おはよう
2 こんにちわ
3 こんばんわ
2)シート名 Sheet2 の A1:C7 に下記リストがあり、1行目はタイトル行とする。
No グループ 内容
1 B
2 B
3 B
1 C
2 C
3 C
3)シート名 Sheet1 には コントロールツールボックスの CommandButton が1つと OptionButton が3つある。
CommandButton1 の Click イベントを下記のようにする。
Private Sub CommandButton1_Click()
Dim op As String, r As Range, fr
'OptionButton は GroupName が同じとする
If Me.OptionButton1.Value Then op = "A"
If Me.OptionButton2.Value Then op = "B"
If Me.OptionButton3.Value Then op = "C"
With Worksheets("Sheet2")
'取り合えず実行するたびに C列 をクリアする
.Range("C2", .Range("A65536").End(xlUp).Offset(0, 2)).Clear
'Sheet2をA2からループ
For Each r In .Range("A2", .Range("A65536").End(xlUp))
'Sheet1(Me)のA列に完全に一致する値があるかを検索
Set fr = Me.Columns("A").Find(what:=r.Value, lookat:=xlWhole)
If Not fr Is Nothing Then
'見つかった場合、op の状態によって転記方法を分ける
Select Case op
Case "A"
'同じなら全部転記
r.Offset(0, 2).Value = fr.Offset(0, 1).Value
Case "B", "C"
'条件に合う場合のみ転記
If r.Offset(0, 1).Value = op Then
r.Offset(0, 2).Value = fr.Offset(0, 1).Value
End If
End Select
End If
Next r
End With
End Sub
こんばんわ。papayukaさま。お世話になります。
教えて頂いたコードで無事に完成しました。
ありがとうございました。本当に助かりました。
実はシート2の「No」と「グループ」が逆で、
しばらくうまくできなかったのですが、
Offsetで-1したらできました。
また機会がありましたら宜しくお願いします。
No.1
- 回答日時:
シート上に置けるオプションボタンやコマンドボタンは2種類あり(コントロールツールボックスとフォーム)それぞれコードの扱い等が違います。
「Aは ALL扱いでグループを無視」って事は、例の通りだとBもCもNoが同じなので下記のような感じで全てのグループに同じ値が入るのでしょうか?
2シート目(更新後)
No グループ 内容
1 B おはよう
2 B こんにちわ
3 B こんばんわ
1 C おはよう
2 C こんにちわ
3 C こんばんわ
> 苦戦しています。
まる投げっぽく見えちゃいますので、ソースコードを提示してどの辺が上手く行かないかを聞かれた方が良いかも。
この回答への補足
ご返信遅くなりすみません。回答します。
コントロールツールボックスを使用しています。
AのALL扱いというのは、BもCもで認識あっており、
(例)に挙げていただいた通りでOKです。
チャレンジしているソースコードを添付します。
まずは値が一致した箇所に代入する。という部分をいろいろ研究しています。
Private Sub CommandButton1_Click()
y = 0
Set d1 = Sheets1
Set d2 = Sheets2
R = d2.Cells(65536, "B").End(xlUp).Row
For i = 1 To R
Set X = d1.Columns("B").Find(What:=d2.Cells(i, "B"), LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False)
If Not X Is Nothing Then
d2.Cells(i, "C") = X.Offset(y, 1)
End If
y = y + 1
Next i
End Sub
これだと、シート1でBと指定した場合、
シート2の結果として、最初にヒットしたBの3レコードみが更新される状態になってしまいます。どこかでカウンタアップさせないとダメみたいです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAで、1つのエクセルで、2つのシートからもう1つのシートに条件のある転記コードを教えてください。 1 2023/03/16 18:07
- Excel(エクセル) VBAで、シート間の転記するコードを教えてください。 4 2023/03/26 10:43
- Visual Basic(VBA) ExcelのVBAを使い、複数シートの同一箇所を、同一条件にて一括でソルバーを回す方法について 1 2022/04/23 11:49
- オープンソース Python openpyxlを使用したセル番地の使用について 1 2023/08/03 22:05
- Visual Basic(VBA) VBA シート間の転記で、条件の追加コードの書き方について教えて下さい。 13 2023/02/26 09:31
- Excel(エクセル) エクセル バーコード作成で他のシートを参照するには? 2 2023/05/03 16:57
- Excel(エクセル) VBAで同フォルダ内の別ブックを開かず参照して条件の一致する行の指定セルを抽出するには? 1 2022/07/21 19:29
- Excel(エクセル) 【Excel】指定のセル内容を基に別シートのセルを検索して選択する【VBA】 1 2022/06/16 16:16
- Excel(エクセル) Excelで質問です! 現在マクロを勉強中の初心者です。 以下のような表から、会社名が空白のもの以外 2 2022/06/14 12:16
- その他(Microsoft Office) EXCELでバーコードを作成すると白くなってコードが見えません 1 2022/04/04 14:24
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル・VBA CheckBoxのオブ...
-
もしフォームヘッダーにコント...
-
ExcelVBAでListViewが使用できない
-
ユーザーフォームで動的(Me.Con...
-
アクセス特有の書き方?
-
OCXって何ですか?
-
変数をコントロール型で使用す...
-
Excel VBA 動的に作成したチェ...
-
カメラスクロールするのを動画...
-
EXCELでactivexコントロールを...
-
コントロールを移動できない
-
間違えて配置してしまったコン...
-
真面目さをコントロールして無...
-
Shapeコントロールの.NET移行方法
-
DataGridView、1セルに複数コ...
-
Groupboxの配下のコントロール...
-
エクセル IEをコピーし貼り付け...
-
LCD 1602ディスプレイの輝度調...
-
コンボボックスの文字によるif...
-
C#で自分のウインド・ハンド...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
カメラスクロールするのを動画...
-
エクセル・VBA CheckBoxのオブ...
-
vb.netで画面のコントロールId...
-
エクセルVBAでオプションボタン...
-
EXCELでactivexコントロールを...
-
ExcelVBAでListViewが使用できない
-
excelのリストボックスで選択し...
-
ユーザーフォームで動的(Me.Con...
-
フォーム上の現在アクティブな...
-
C#で自分のウインド・ハンド...
-
変数をコントロール型で使用す...
-
VBAのフォームでTextBoxがいっ...
-
コントロールを移動できない
-
Groupboxの配下のコントロール...
-
C#で角が丸いテキストボックス
-
(VBA)スピンボタンの大量...
-
間違えて配置してしまったコン...
-
エクセル コントロールツール...
-
'ckbl' コントロールは作成され...
-
OCXって何ですか?
おすすめ情報