Excel (VBA)

Excel VBAに関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(指定なし : Excel 2010)
データの抽出と登録(クリア)
投稿日時: 21/09/12 22:26:02
投稿者: まさ@まさ

お世話になっております。
 
簡単に説明すると
エクセルの特定セルに検索値(文字等)を入力すると
データより該当する物が抽出できるシートを作成しています。
 
抽出したデータの横列、何列かにデータを入力します
 
ネットで調べて同一シートにデータを取り出すところまではできました。
 
レイアウトは下記のようになっています
シート2で作成
       A    B C        G H   I J
7 部品名  図番  機種 機種 
 
H7には検索値、結果がI(図番)J(部品名)が出てきます。
下記がそのマクロです。
 
Private Sub CommandButton1_Click()
Dim myRange As Range, meRange As Range, myAddress As String, i As Integer
Set meRange = Range("c8:c5000")
Set myRange = meRange.Find(What:=Sheet2.Range("h7").Value, LookIn:=xlValues)
If Not myRange Is Nothing Then
myAddress = myRange.Address
i = 7
Do
Cells(i, "i").Value = myRange.Offset(, -1).Value
Set myRange = meRange.FindNext(After:=myRange)
i = i + 1
Loop Until myRange.Address = myAddress
Else
MsgBox "該当者がいません"
End If
Dim myyRange As Range, meeRange As Range, myyAddress As String, j As Integer
Set meeRange = Range("c7:c5000")
Set myyRange = meeRange.Find(What:=Sheets("test").Range("h7").Value, LookIn:=xlValues)
If Not myyRange Is Nothing Then
myyAddress = myyRange.Address
j = 7
Do
Cells(j, "j").Value = myyRange.Offset(, -2).Value
Set myyRange = meeRange.FindNext(After:=myyRange)
j = j + 1
Loop Until myyRange.Address = myyAddress
Else
MsgBox "該当者がいません"
End If
End Sub
 
上記でデータの簡単な抽出はできるのですが
テストで作成した物ですのでレイアウトを変更したり本当にしたいことには程遠く
どう変えればよいかお教えいただきたいです。
 
レイアウト
シート2のABC列はデータですが一部変更し
A項目1B項目2C部品名D図番E機種として保管(抽出用、追加有)
シート3に
A1:A2ぐらいに機種検索欄を作成
 
26行目に見出しを作成
B26に項目1C26に項目2D26に項目3E26に項目4F26に項目5G26に図番H26に項目6I26に項目7J26に項目8
K26に項目9L26に項目10M26に項目10
とします。
 
検索したデータは25行目より上に表示されるようにし
最後の列から項目4、項目10を入力できるようにしたい。
項目10の隣の列には項目10+全角スペースを入れ検索値を入れる
 
これを27行目以降の未入力欄にデータとして蓄積。
検索値で検索したときに該当する機種の蓄積データを表示されるようにしたいのですが
可能でしょうか?
 
列が多くエクセルをここに表示すると見にくくなると思い、文章にしました。
 
VBA初心者ですのでお教えいただければと。
項目の並び順以外のセル配置にはこだわりはありません。
25行目まで空けているのも抽出表示のためです。
 
 
 
 
 

回答
投稿日時: 21/09/13 09:57:01
投稿者: Suzu

参考になるコードをネットから探しても、
それを、自分の好みに改造できる事ができないと何にもなりませんよね。
 
 
それは、ここで聞いても一緒です。
 
目的のレイアウトで、目的の動作をするコードが得られたとしても
今後、レイアウトの変更が出たときに、改造したいときにどうされますか?
 
ネットで探したら、それを改造できるだけの基礎知識は必要です。
 
 
それよりは、希望の動作をする 一般機能を知った方がまだ有効だと思います。
それを、マクロの自動記録にて、記録してみてください。
 
 
[フィルタオプションの抽出結果を別シートに表示する]
https://www.moug.net/tech/exopr/0040016.html
 
[フィルタオプションで列ごとのデータを抽出する]
https://www.moug.net/tech/exopr/0110027.html

トピックに返信