マクロについて勉強中の者です。

"Sheet1"にあるデータをオートフィルタで抽出し、
"Sheet2"に抽出データのみをコピーをしたいと思っています。

Range("A10:G59").Select
Selection.ClearContents

With Worksheets("Sheet1").Range("A1")
.AutoFilter
.AutoFilter Field:=1, Criteria1:="○"
.CurrentRegion.SpecialCells(xlCellTypeVisible).Copy Worksheets("Sheet2").Range("A9")
End With

End Sub

としてみたのですが、
これを実行すると、オートフィルタが1行目(A1)ではなく、
2行目で設定されてしまい、抽出データがずれてしまいます。

   A    B    C
1 品 名  仕入先  発注数 ←タイトル行に設定したい
2 りんご  ヤマト   10  ← この行に▼が設定される

色々調べた結果のマクロなので、どこが悪いのか見当がつきません。
解りやすく教えていただける方がおられましたら、よろしくお願い致します m(__)m

このQ&Aに関連する最新のQ&A

A 回答 (2件)

こんにちは。



ご質問者さんのコード自体は、間違いではないと思います。私の知っている限りでは、そういう現象は、オートフィルタにはないからです。何かバグに近いような気がしますが……。
Excelのバージョン等は分かりますか?詳しく調べてみないと分からないです。

一応、ためしに書き換えてみましたが、これは、別にに、ご質問の要件の部分には解決していないような気がします。以下は、.Range("A1").CurrentRegion は、.Range("A1") でも、経験的には同じはずです。

Sub Test1()
  Worksheets("Sheet2").Range("A10:G59").ClearContents
  With Worksheets("Sheet1")
    If .AutoFilterMode Then
      .AutoFilterMode = False
    End If
    With .Range("A1").CurrentRegion
      .AutoFilter Field:=1, Criteria1:="○" '品名を入れる
      .SpecialCells(xlCellTypeVisible).Copy Worksheets("Sheet2").Range("A9")
    End With
  End With
End Sub

この回答への補足

早々のご対応ありがとうございます。

>ご質問の要件の部分には解決していないような気がします
と仰いますが、ここまできちんとコードを作っていただきましたし、
さっそく試してみます。

またご報告させていただきますね!

補足日時:2009/05/18 21:15
    • good
    • 0
この回答へのお礼

ご報告が遅くなって申し訳ありません m(__)m

作成していただいたコードを必要な形に修正して
新規で作成したのですが、問題なく作動してくれました!

Wendy02様のコードですと、オートフィルタの解除が
きちんと書かれていますが、当方にはありません。
もしかしたら、この辺が上手く作動しなかった原因でしょうか。

何にせよ、まだまだ発展途上ですので
これを機会にまた勉強していきたいと思います。
今回は本当にありがとうございました♪

お礼日時:2009/05/20 13:46

回答ではありませんが、



マクロの自動記録を開始し、やりたい動作を行って、記録終了
→結果を見ればHINTになると思います。

この回答への補足

早々のご対応、ありがとうございます。
自動記録はためしにやってみたんですが、
抽出データのコピーが上手くいかなくて… (>_<)
見比べてみたら、違いはWith~の4行目のみなので、
もう少し調べてみます。

補足日時:2009/05/18 20:57
    • good
    • 0
この回答へのお礼

無事に解決いたしました。
早々に対応いただきまして、本当にありがとうございました。

お礼日時:2009/05/20 13:50

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qipod用Copy Trans Mangerとは

ipodのデータを取り出したいので探しました。評判はどうでしょうか?

Aベストアンサー

 ファイルは、取り出せません。iPodのディスク上の、ファイルを眺めるだけです。 
   
 削除はできますが、そして追加できますが、ディスクから、ファイルをコピーしたり、移動させたりはできません。 
   
 また、ディスクとしての使用が前提となります。若し、そうでなかったとしたら、itunesで、「 ディスクとして使用する 」の「 チェック 」を入れる必要があります。 

QExcel VBAのWorksheetとsheetの違いが知りたい

Excel VBAのWorksheetとsheetの違いが知りたいです。
同じsheetが付いているので、同じと思ってしまうのですが・・・
こういう背景というか概念について詳しい方教えてください。

Aベストアンサー

はじめまして

よく使うシート(Sheet)には
・ワークシート(Worksheet)
・グラフシート(Chart)
があります。
ワークシートはシートの一種です。

例えば、グラフシートがあるブックでは
msgbox Worksheets.Count

msgbox Sheets.Count
の結果は違います。

グラフシートのあるブックで、複数のワークシートを一括で処理するようなときには注意が必要です。

Qメール転送サービスTRANS-MAILの設定方法

メール転送サービスTRANS-MAILで
自分のプロバイダ宛に届いたメールを
携帯電話のメールに転送したいのですが
設定方法が間違っているのか、転送できないのです。。。

TRANS-MAILで取得したアドレス宛にメールが届くと
ちゃんと携帯までメールが転送されます。

プロバイダ→TRANS-MAIL→携帯メール、の転送は
出来ないのでしょうか?

どなたか設定方法がわかる方、ご指導お願いします(ToT)

Aベストアンサー

こんばんわ。
通常のプロバイダーでしたら、メールの転送サービスは、特に料金不要でやっていると思いますが・・

>プロバイダ→TRANS-MAIL→携帯メール
この手順ではなくて、

プロバイダ→携帯メール
TRANS-MAIL→携帯メール

の2本だてにはなりますが、普通は問題無いと思いますが・・

よろしければ「プロバイダ名」を教えてくれませんか?

QWorksheet Worksheets オブジェ

「Worksheetオブジェクト」と「Worksheetsオブジェクト」は何が違うのでしょうか?
使い方もいまいちわかりません。

この二つを使う時は、

Sub test1()
Dim w As Worksheet
For Each w In Worksheets
Debug.Print w.Name
Next
End Sub

とするときなのですが、
なぜ、変数の宣言をする時は、Worksheetを使い、
ワークシートの数を数える時は、Worksheetsを使うのでしょうか?

Aベストアンサー

Worksheetsは「ワークシートコレクションオブジェクト」、つまりワークシートの集まり(コレクション)です。
worksheetは「1枚のワークシート」です。
コレクションの中に含まれている、一枚一枚のワークシートがworksheetオブジェクトです。


’アクティブブックに含まれるワークシートの束の中から、1枚ずつのワークシートを巡回する
for each w in worksheets
'その1枚について、ワークシートの名前を取得する
 debug.print w.name
next

Qzero-trans activityとは?

 私は現在、トレハロース輸送体であるTRET1に関する論文を読んでいます。その論文では、zero-trans activityというものをを測っています。このzero-trans activity測定後は、データをミカエリスーメンテンの式にあてはめ、続いて非線形近似によってVmaxとKmの値を出しています。
 このzero-trans activityとは何をあらわすのかを教えてください。自分が調べた限りでは、糖輸送体の糖摂取量を測る際に用いられているという気がしましたがさだかではありません。ご回答よろしくお願いします。

Aベストアンサー

Pubmedで"zero-trans"を検索し、最も古い文献から見ていくと分かるはずです。

Qデータベースsheetから抽出したいデータをコピーするには?

現在、EXCELファイルで1つのワークシートをDB(データーベース)として日々の受払いを管理番号を付して入力していき、同ファイルの2つめに抽出用の様式を設けて、そのシートに管理番号で指定したデーターを様式に従った形で転記できたらと考えています。(管理番号で指定したデータは複数行・列になることもあります。)
この場合でマクロを組むとしたらどのように組めばよいのでしょうか。
マクロの記録機能などでやっては見たもののわかりません。教えていただけないでしょうか。
因みに初心者です。

Aベストアンサー

(1)シートを2つ考え、シート名をSheet1とSheet2とします。
Sheet1のA列に管理番号があるとします。
(2)Sheet2のB2に抽出する管理番号を入力します。
(3)「>様式に従った」の様式による項目(の1つが)がF4 にあるとして
F4に=VLOOKUP(B2,Sheet1!$a$2:$c$100,2,FALSE)と式を入れます。
Sheet1のB列の項目(第3引数の2が、それを決めます)を持ってきます。
Sheet2の他のセルには、Sheet1から持ってくる項目によって、VLOOKUP関数の第3引数を変えます。
不動(地の文章の)文字はそのまま適当なセルに打ち込みます。
これで、Sheet2の自分の好きなセルに、Sheet1から指定した管理番号行の任意の項目データがセットできます。
ここまではVBAを使わないでできるし、使わないほうが良い。
(4)これで困るのは、抽出結果(該当行が2つ以上ある(ありえる)ときです。
この場合はVBAでないとできません。
(5)もうひとつ、複数個該当があるときも、印刷するなら、Sheet1の1行分をSheet2にセットー印刷ー1行分セットー印刷をVBAで繰り返しでできます。
(7)2枚以上のシートに抽出結果を帳票形式で残したいときは、VBAでないとできません。元データがSheet1に残ってあるので、通常こういう必要はない場合が多いはずです。請求書を印刷して終わりというようなケースが多い。その場合にSheet2に当たるものを2シート以上設けないでやります。シートが一時的変数になるイメージです。
(8)2行以上該当があるときはVLOOKUPが使いずらいです。
各項目にVBAで項目をセットします。
'Sheet3!B3->Sheet4!A2の例を挙げます。自分の例に合わせて応用してください。
抽出・セット・印刷の中のセットの中核です。
Sub test01()
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Set sh1 = Worksheets("Sheet3")
Set sh2 = Worksheets("Sheet4")
sh2.Cells(2, "A") = sh1.Cells(3, "B") 'Sheet3!B3->Sheet4!A2の例
End Sub
(9)抽出は1行ずつ判定する、総なめ法を、経験の初期には勧めます。
ーーーー
これで#1の示唆されているVLOOKUPの使い方を具体的に説明したつもりです。また#2さんのおっしゃることも同感です。
上記の中に、本当は質問者が指定し例示すべき点が相当あるでしょう。具体的な列番号など決まらないと、プログラムできない。
勝手に決めて回答したとき、VBAのコードをどう修正していいか和からなそうな質問者もいそう。
エクセルのシートは、他のデータベースの経験者からすると、データーベースというには、おこがましいと思うものです。よくエクセルでも使う方がいますが、「ワークシートに入力・記録しています」で良いのでは。
質問を読んで、もう少しVBAを勉強を広げてからでないと、仕事には使えないように感じました。


    

(1)シートを2つ考え、シート名をSheet1とSheet2とします。
Sheet1のA列に管理番号があるとします。
(2)Sheet2のB2に抽出する管理番号を入力します。
(3)「>様式に従った」の様式による項目(の1つが)がF4 にあるとして
F4に=VLOOKUP(B2,Sheet1!$a$2:$c$100,2,FALSE)と式を入れます。
Sheet1のB列の項目(第3引数の2が、それを決めます)を持ってきます。
Sheet2の他のセルには、Sheet1から持ってくる項目によって、VLOOKUP関数の第3引数を変えます。
不動(地の文章の)文字はそのまま適...続きを読む

QTRANS-の意味合いは

TRANSFER
TRANSLATE
TRANSFORM
この三つの動詞のROOT(SIMPLE WORD)としてのTRANS-
はPREFIXですか
三つの事例で意味の差異は何ですか

Aベストアンサー

1。 trans + ferre 「運ぶ」
http://www.merriam-webster.com/dictionary/transfer
2。 trans + latus ferre の過去分詞
http://www.merriam-webster.com/dictionary/translate?show=0&t=1298361776
3。 trans + formare「形」
http://www.merriam-webster.com/dictionary/transform
 いずれもラテン語から入った言葉で、もとの意味は下記のように「向こうへ」「横に」「~を通って」という意味です。across, beyond, through
http://dictionary.reference.com/browse/trans
 http://www.merriam-webster.com/dictionary/trans-
 向こうに運ぶのが transfer(運搬する)、向こう(の言葉)に移すのが translate(翻訳する)、向こうの形にするのが transform(変形する)です。

反対語は cis-「こちらの」という前接辞で、 cisalpine というと「(普通イタリア側から見て)アルプス山脈のこちら側」 transalpine「アルプス山脈の向こう側」という意味があります。

 でご質問ですが
>>TRANS-はPREFIXですか

 はい、そうです。
>>三つの事例で意味の差異は何ですか

 上に述べたように、意味の差はありません。

1。 trans + ferre 「運ぶ」
http://www.merriam-webster.com/dictionary/transfer
2。 trans + latus ferre の過去分詞
http://www.merriam-webster.com/dictionary/translate?show=0&t=1298361776
3。 trans + formare「形」
http://www.merriam-webster.com/dictionary/transform
 いずれもラテン語から入った言葉で、もとの意味は下記のように「向こうへ」「横に」「~を通って」という意味です。across, beyond, through
http://dictionary.reference.com/browse/trans
 http://www.mer...続きを読む

QExcel マクロ 抽出 フィルタ 別シート

マクロは記録しかできない初心者です。
たとえば、
田中 6月 ナシ 12
鈴木 4月 林檎 23
安部 5月 葡萄 34
田中 5月 イモ 12
鈴木 7月 エビ 23
というデータがあって、別シートに「田中」だけのデータを抽出したい場合はどのようなマクロを組めばよいですか。
田中 6月 ナシ 12
田中 5月 イモ 12

しかも、その検索するデータを入力すると検索できるようにしたいのですが。たとえば、
A1に田中←と入力するとそれ以下に
田中 6月 ナシ 12
田中 5月 イモ 12  と抽出されるようにしたいです。

マクロ初心者ですので、詳しく説明をいただければ幸いです

Aベストアンサー

データ行数が多いということらしいが
テストデータでテストプログラムで600行ぐらいのデータでやったが、1瞬でした。10000行ぐらいなら辛抱できる処理時間でしょう。やってみて言っていますか。
下記は一番泥臭い総舐め法です。
下記コードで実際やってみてください。
こんな簡単なコードで出来ることです。
Sub test01()
k = 1
d = Worksheets("Sheet1").Range("A65536")
For i = 1 To d
x = Worksheets("Sheet1").Cells(i, "A")
If x = "田中" Then
Worksheets("Sheet2").Cells(k, "A") = Worksheets("Sheet1").Cells(i, "A")
Worksheets("Sheet2").Cells(k, "B") = Worksheets("Sheet1").Cells(i, "B")
Worksheets("Sheet2").Cells(k, "C") = Worksheets("Sheet1").Cells(i, "C")
k = k + 1
Else
End If
Next i
End Sub
ーー
If x = "田中" Then
の田中は検索条件の値の入っているセル(Sheet1のA1らしい)を指定してください。
実行のキッカケはボタンのクリックイベントなどに登録。
ーーー
処理するロジック・手法
(1)総なめ法(上記)
(2)Find,FindNext法
(3)Filter・コピー法
(4)ソートし田中の塊の行を抜き出し
(5)データ構造を持ち込む(作りこむ)
(6)アクセスなどに持ち込んで(MSクエリなど)SQLで処理
(7)ユーザー関数を作る(第n番目出現のの田中の行番号を返す関数)
私が思いつくものでも色々ある。

データ行数が多いということらしいが
テストデータでテストプログラムで600行ぐらいのデータでやったが、1瞬でした。10000行ぐらいなら辛抱できる処理時間でしょう。やってみて言っていますか。
下記は一番泥臭い総舐め法です。
下記コードで実際やってみてください。
こんな簡単なコードで出来ることです。
Sub test01()
k = 1
d = Worksheets("Sheet1").Range("A65536")
For i = 1 To d
x = Worksheets("Sheet1").Cells(i, "A")
If x = "田中" Then
Worksheets("Sheet2").Cells(k, "A")...続きを読む

QVOXY TRANS-Xについて

旧型のVOXY TRANS-Xが欲しいなと思ってますが、(旧型の二列仕様もTRANS-Xというグレード名でしたっけ?)
二列目の広さは三列仕様と同じで、ただ単に三列目部分が荷台として使えるだけでしょうか?
二列目が三列仕様よりもロングスライドで後ろまで行って居住スペースが広く使えれば・・・と期待しています。
どなたか、回答よろしくお願いします。

Aベストアンサー

「TRANS-X」(ノアのグレードだと「YY」)は、

乱暴に言ってしまえば、ただ3列目シートを取っ払っただけですから、車体に手は加えていないので、ロングスライドはしないはずです。(6:4分割可倒のダブルフォールディング式ベンチシートです。)

じゃあ、なんでそんなグレードを設定したの?と言うと「TRANS-X」のハイライトは、2列/5人乗りを踏まえての変幻自在なカーゴルームにあります。

ポイントは、単に空間を提供するだけでは無く、そこを有効活用する為の専用間仕切り板(デッキボード)を用意した事です。

合計3枚のデッキボードは、カーゴルームの側壁に設けられた左右の腰板の間を橋渡ししたり、適宜外したり、組み合わせを変えたりする事によって、合計9パターンの異なる用途に利用出来ます。

代表的なのは「ベッド」「テーブル」「長尺物」の各モードです。

まず「ベッド」は、一見、ユニットバスの分割式フタにも似た樹脂なので、「果たして大人が2人横になって荷重に耐えられるものか?」と危惧されますが、「たわみ」などは皆無で、しっかりした印象です。

「テーブル」は1枚のデッキボードの裏に折り畳み式の脚が付いており、それを立てる事によって「掘りゴタツ」の様になります。

「長尺物」はセカンドシートのみならず、助手席までバックレストを前倒しします。この場合、室内長は実に2935mmにもなるので、サーフボード等もそのまま楽々収容できるはずです。

特徴的なのは、それら全てのモードで水平面のレベルが揃っており、又、オリジナル設計だけに、見た目の収まりがキレイでスッキリしている事です。

更に、最後部にはカーゴルーム本来の床板を跳ね上げると、そこだけで軽自動車のトランク位はある収納スペースが出現します。

「TRANS-X」(ノアのグレードだと「YY」)は、

乱暴に言ってしまえば、ただ3列目シートを取っ払っただけですから、車体に手は加えていないので、ロングスライドはしないはずです。(6:4分割可倒のダブルフォールディング式ベンチシートです。)

じゃあ、なんでそんなグレードを設定したの?と言うと「TRANS-X」のハイライトは、2列/5人乗りを踏まえての変幻自在なカーゴルームにあります。

ポイントは、単に空間を提供するだけでは無く、そこを有効活用する為の専用間仕切り板(デッキボード)を用意した事で...続きを読む

Qオートフィルタを使わず条件抽出

オートフィルタを使わず条件抽出をしたいのですが数式がわかりません。(Accessを使えばよいのですが会社からNGがでたため)

具体的には、Sheet1に参加日、参加時間、受付整理番号、氏名、フリガナ、そのほか住所などの申し込みデータがあります。
そこから、毎日、その日、その時間分の参加者データを綺麗なリストとして印刷したいため、1つの参加日・参加時間の氏名・フリガナだけを抽出した別シートSheet2で作成したいのです。

別シートに、A1に参加日、B1に参加時間を入力すると(実際は入力規制のリストから選ぶ)、
整理番号1番から縦に30番まであるセルC列の右D列に、氏名を表示させるようにしたいのです

以下、Sheet2の項目です

A1    B1   C     D  F
参加日 参加時間 整理番号 氏名 フリガナ
          1   数式 数式
          2   数式 数式
          3   数式 数式

A1でかつ、B2でかつ、C2に絞った結果をSheet1から抽出することは可能でしょうか

オートフィルタを使わず条件抽出をしたいのですが数式がわかりません。(Accessを使えばよいのですが会社からNGがでたため)

具体的には、Sheet1に参加日、参加時間、受付整理番号、氏名、フリガナ、そのほか住所などの申し込みデータがあります。
そこから、毎日、その日、その時間分の参加者データを綺麗なリストとして印刷したいため、1つの参加日・参加時間の氏名・フリガナだけを抽出した別シートSheet2で作成したいのです。

別シートに、A1に参加日、B1に参加時間を入力すると(実際は入力規制のリ...続きを読む

Aベストアンサー

Sheet1に作業列追加すると便利と思います
例えばA列に一列挿入して
=(TEXT(参加日+参加時間,"yyyymmddhhmm")&整理番号
で下までコピィしておきます。目障りであれば非表示にします。

別シート
  A     B    C    D
1 2008/8/1 10:00 整理番号
2             1
3             2
4             3
D2には=VLOOKUP(TEXT($A$1+$B$1,"yyyymmddhhmm")&C2,Sheet1!$A:$F,4,FALSE)
で下フィルします。
詳しくは VLOOKP関数のHelp参照してください。
エラー処理は別途考えてください。


人気Q&Aランキング

おすすめ情報