プロが教える店舗&オフィスのセキュリティ対策術

エクセルVBA初心者です。

シート1の(A,1)にデジカメと表記があり、同じ行のB~Hの列にそれぞれの数字が入っていたとします。

それをシート2のA列の適当な行(例えばA,15)にデジカメという表記があった場合に、シート1の(B,1)~(H,1)の値をシート2の(B,15)~(H,15)にコピーする方法をご存じな方、教えて下さい。

単純なコピー&ペーストは「マクロの記録」で可能かと思いますが、シート2に「デジカメ」の項目があった場合に、シート1の元データから同じ「デジカメ」の項目を探しだし、コピーしたいのです。

なにぶん、初心者で勉強中なものですから、表記等適切でないものがありましたら申し訳ありません。

A 回答 (3件)

>(B,15)


B15のセル、で判る。>(B,15)と表記するのはあまり見かけない。
それでこういう書き方をしているということは、エクセルそのものの使用経験が少ないのでは。そんなレベルでVBAをやるのは勧められない。
関数(VLOOKUP関数や、MATCH関数とINDEX関数の組み合わせで出来るだろう。
そういう問題の場合、順序として関数でやるものではないかな。
ーーー
VBAでやる場合
処理ロジック、というものをてんで質問に書いてない。これを質問者が独力で、生み出せるように訓練しないと、1問2問教えてもらっても、当面の問題に人に頼っただけ。
色色あると思うが
(1)総なめ法(存在する可能性のある対象全行をデジカメかとIF分で聞く)
(2)Findメソッドを使う(検索に当たる)。マクロの記録が採れてコードがどういうものかわかるが、FindNextとのからみが難しいので初心者には難しい。WEBには多数コード例がある。
「VBA Find」でWEB照会すること。
(3)VBAで関数VLOOKUP、MATCH関数などを使って、デジカメなどのあり場所(普通は行番号)を見つける。
Application.WorkshhetFunction
これでWEB照会のこと。
(4)エクセル操作のフィルタを、VBAで使う(マクロの記録が採れる)
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

ご指摘を受けましたとおり、社会人となり初めてエクセルを利用し、
使用経験は一年程度です。

現在、会社では残業規制等で業務の効率化が進められており、担当業務
を少しでも短時間で終わらせるよう、藁にもすがる気持ちでネットで質問いたしました。

回答者様のおっしゃるよう、まだまだ勉強不足であることを実感しました。
回答者様の教えていただいた方法をヒントに、自分の力となるよう
勉強いたします。

アドバイス、身に染みました。
どうもありがとうございました。

お礼日時:2009/11/06 00:31

Sheet2の1行目は見出しとします。


'-------------------------------------------
Sub Test()
 Dim R As Long
 Dim myCell As Range

 Sheets("Sheet2").Select

 For R = 2 To Cells(Rows.Count, "A").End(xlUp).Row
  Set myCell = Sheets("Sheet1").Range("A:A").Find(Cells(R, "A").Value, , xlValues, xlWhole)
  If Not myCell Is Nothing Then
    myCell.Resize(1, 9).Copy Cells(R, "A")
  End If
 Next R
End Sub
'--------------------------------------------

以上です。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

プログラムまで回答いただき、大変感謝しております。
"A"というのは適切なセル番地を入れるという意味ですよね?
ご記述いただいたメソッド等を本で理解し、VBAでエクセルを動かせるようにします。

お礼日時:2009/11/06 00:16

VBAを利用しなくてもExcelの関数で実現可能な場合もあります。


この場合A列(A,1デジカメ A,2○○ A,3 □□・・・)の内容が昇順で並んでいる場合はVLOOKUP関数で実現できます。

試しに質問内容通りにデータが入っているとした場合
シート2のB,15に
=VLOOKUP($A15,Sheet1!$A$1:$H$1,2,FALSE)
と入力してください。

どうしてもVBAで実現したいのであればまた回答できればいたします
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

早速、VLOOKUP関数をためしてみました。
私のコピーしようとしている表は実際はもう少し複雑なため(デジカメの下にも同じようなフォームで「一眼レフ」という項目があると想像して下さい)多少苦労はしましたが、望んでいた結果を得ることができました。

勉強させていただき、ありがとうございます。

お礼日時:2009/11/06 00:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!