dポイントプレゼントキャンペーン実施中!

Exel2003のマクロで特定の列データを別のシートに貼り付けたいのですが。
初めて、BVAを触るのでどのような命令があるのかさえ把握しきれてません。
流れとしては、以下でよいのでしょうか?

(1)列名で判定して列を特定する
(2)(1)で特定した列のデータを取得する

それとも、一発で出来る関数があるのでしょうか?

A 回答 (3件)

こんばんは!



「特定の列」の条件が判らなければ、列の特定ができませんので、やり方だけ・・・

Sheet1の1行目が項目行になっていて、列方向に色々な項目が入っているとします。
その中の一つの項目をSheet2のA列にコピー&ペーストするコードです。

Alt+F11キー → VBE画面が出ますので画面左下にある「This Workbook」をダブルクリック → 
↓のコードをコピー&ペーストしてマクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)


Sub test() 'この行から
Dim j As Long
Dim str As String
Dim ws1, ws2 As Worksheet
Set ws1 = Worksheets("sheet1")
Set ws2 = Worksheets("sheet2")
str = InputBox("抽出したい項目名を入力")
If WorksheetFunction.CountIf(ws1.Rows(1), str) Then
j = WorksheetFunction.Match(str, ws1.Rows(1), False)
ws1.Columns(j).Copy Destination:=ws2.Cells(1, 1)
Else
MsgBox ("検索項目がありません。")
Exit Sub
End If
End Sub 'この行まで

※ あくまでたたき台ですので、条件等が具体的に判ればもっと適切な回答が得られると思いますよ。

この程度で失礼します。m(_ _)m
    • good
    • 0

初心者だろうに、データ実例も挙げて、質問しないから、何のことを言って居るか、正確にわからない。

聞くほどのことでもないと効いていることの予想が難しい。
>特定の列
B列とかC列とか考えるのか?
その他の指定なのか。例えばデータの最も右の列をとらえたい、なんていうのもあるのだ。
まず単数列か複数列かが肝心。
Range(”A1:B10”).Copy
貼り付けも含めて、の書きかたは
Sub test02()
Range("A1:A10").Copy Range("H1")
End Sub
ーー
Sub test02()
Range("A1:B10").Copy Range("H1")
End Sub
のようにかけるが、質問者のセルの指定はどうしようとしているのか。
>初心者は「特定の」が好きだが、むしろ、A列の1行目から10行目までとか、1つの場合の記述で説明して、質問し、回答に対し、質問者が類推を働かせて、実際の質問者の場合のコードを作り上げるほうがよかろう。
ーー
ここへ質問して有効なのは、VBAの初級を卒業してから。
それまでは、解説書を繰り返し読むか、スクールへ通うこと。
ーー
二ーズがまずあって、勉強もしてないのに、当たろうとしても無理です。
職人仕事でも、初めは、そばで付いて指導する人が必要でしょう。どうしてプログラムだけは、聞いて何とかなるように思うのか。
VBAはすべて他人(マイクロソフト)が作った約束事なのに、ほとんど覚えるほか無いのに。
    • good
    • 0
この回答へのお礼

質問が抽象的で失礼いたしました。
皆様から教えていただいたコード内の命令を一つずつ調べております。
一つずつ動作を確認して時間が掛かってますが。
ほぼ実現できそうです。
本来は基本から勉強するべきでしたがやっつけでこれ1本の急ぎと言う
現実があり不躾な質問申し訳ありませんでした。
質問の回答は、ほぼ得られたました。
あまり、情報が増えると処理しきれないので解決とさせていただきます。
皆様のコードが参考になったのにベストアンサーは1人さましか選べないのが残念です。
お許しください。

お礼日時:2011/11/03 17:27

たとえば目的の列が「必ず1つある」のか「1つもない場合もある」のか「該当する列は実はいくつもある」のか,そういったそもそもアナタの実際のデータがどうなっているのかを,ご自分で一番によく把握しなくては始まりません。



また「判定」とは一体全体具体的にどういう事なのか,たとえば「データの完全一致」なのか,それとも「セルに色が塗ってある」だとかそういう事を見たいのかといった,「アナタのヤリタイことは一体何ですか」というのもご自分でキチンと理解してからでないと,何も出来ません。



作成例:
sub macro1()
 dim h as range
’探す
 set h = range("1:1").find(what:="abc", lookin:=xlvalues, lookat:=xlwhole)

’見つからないときは終了する
 if h is nothing then
  msgbox "NOT FOUND"
  exit sub
 end if

’コピーする(とりあえず1列)
 h.entirecolumn.copy destination:=worksheets("Sheet2").range("A1")
end sub
    • good
    • 0

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