• 締切済み

オートフィルタのようなマクロ

imogasiの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

#2です。マクロの記録を改造してできるコードを思いついたので追加しておきます。 例データ A1:S4 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 山田 4 5 3 3 4 5 7 5 5 6 3 4 5 6 3 4 6 5 上田 3 4 4 4 4 4 6 5 8 7 3 5 6 6 4 4 6 5 鈴木 5 4 4 5 4 5 5 6 6 5 4 7 4 7 3 5 8 5 コード 標準モジュールに Sub Macro1() x = InputBox("指定スコア") c = Application.WorksheetFunction.CountIf(Range("B2:S4"), x) MsgBox c k = 2 '--- Range("B2:S4").Select Selection.Find(What:=x, After:=ActiveCell, LookIn:=xlFormulas, LookAt _ :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ False, MatchByte:=False, SearchFormat:=False).Activate '---- cl = ActiveCell.Column rw = ActiveCell.Row Worksheets("Sheet2").Cells(k, "A") = Worksheets("Sheet1").Cells(rw, "A") '競技者 Worksheets("Sheet2").Cells(k, "B") = Worksheets("Sheet1").Cells(1, cl) 'ラウンド k = k + 1 '---- For i = 1 To c - 1 Selection.FindNext(After:=ActiveCell).Activate cl = ActiveCell.Column rw = ActiveCell.Row Worksheets("Sheet2").Cells(k, "A") = Worksheets("Sheet1").Cells(rw, "A") '競技者 Worksheets("Sheet2").Cells(k, "B") = Worksheets("Sheet1").Cells(1, cl) 'ラウンド k = k + 1 Next End Sub ーーー 結果 Sheet2に A列   B列 競技者 ラウンド 山田 10 山田 14 山田 17 上田 7 上田 13 上田 14 上田 17 鈴木 8 鈴木 9 ーーーーー 改造前のマクロの記録は 操作は ツールーマクロー新しいマクロの記録 B2:S4を範囲指定 編集ー検索ー(例えば)6を入力ー次を検索ー次を検索・・ それと上記コードを比べると、改造箇所がわかりますが、改造もなれないと難しいものと思うが。 ただ上記のやり方が絶対唯一ではない。

関連するQ&A

  • 4つの並べ替えをする方法を教えてください

    EXCELLで、グランドゴルフの順位を素早く決めるための並べ替えをしたのですが、3項目までしか出来ません。4項目目を追加するにはどうしたらよいのでしょうか。 (1)スコア(2)ホールインワン数(3)2打数(4)年齢 の順です。

  • マクロ オートフィルタで困っています。

    マクロ オートフィルタで困っています。 1列目と2列目からそれぞれ条件をフィルタで抽出し、抽出された行を削除するマクロを組んだのですが(下記)、Bの条件が表にない場合に2行目から下が全て削除されてしまいます。 元の表は毎週変わるため、抽出する条件があるかないかはその時次第です。 オートフィルタにこだわってはいませんが、その他の抽出方法もいまいち分からず……。 どのようにすればよいのか、教えていただけますでしょうか。 宜しくお願い致します。 <マクロ> Sub Macro() Selection.AutoFilter Field:=1, Criteria1:="A" Selection.AutoFilter Field:=2, Criteria1:="B", Operator:=xlAnd Dim gyou(1) As Long gyou(0) = 2 gyou(1) = Range("A1").CurrentRegion.Rows.Count Rows(gyou(0) & ":" & gyou(1)).Select Selection.Delete Shift:=xlUp End Sub

  • マクロでオートフィルターの抽出が出来ない

    下記のデーターをマクロで作成しましたが、2010/03/01は抽出するが、2010/03/02以降は デバッグが発生して上手くいきません。 どの様にすれば解決できるのか、ご教授お願いします。 現状) AファイルのA列のオートフィルタオプションで、抽出条件の指定にBファイルの C6をコピーして、「Ctrl」+「V」で貼り付け抽出すると2010/03/01の24時間分の データーが抽出されます。2010/03/02を抽出するとデバッグが発生する。 データーの詳細) Aファイルに「元データー Sheet」があり、A6~A44647に、 1ヶ月分の日付が記載されてます。 (B6~B44647には、24時間を1分間隔でのデーターがあります) A列の日付は、2010/03/01~2010/03/31のデーターがあり、 「セルの書式設定」を確認すると、「標準」設定で表記されてます。 オートフィルタによりA列の、各1日分のデーターを抽出させます。 Bファイルの「作成日指定 Sheet」のB3に2010/3/1を入力すると C6には「=$B$3」で「2010/03/01」と表示する様に「セルの書式設定」 「ユーザー定義」で「yyyy/mm/dd」を選択してます。(C36まで設定) 以下C7に「=$B$3+1」で、C8には「=$B$3+2」で、C36までで「2010/03/31」 と表示させてます。

  • オートフィルタについて

    オートフィルタで2つの項目を抽出する方法はありますでしょうか。 A  B  C 1 ねこ  白い 2 ねこ  黒い 3 いぬ  白い 4 ねずみ 青い 5 かめ  緑 6 鳥   黒い 上のような表でB列の「ねこ」と「いぬ」の行を同時に表示する方法は ありますでしょうか。(上の表だと結果3行分表示する。)

  • Excelで検索ウィンドウを表示させたい

    Excelでマクロを使ってボタン(検索ボタンみたいなのを作って)を押すと検索ウィンドウが開いて検索できるようにしたいのですがどうすればいいでしょうか?また、検索をブック全体にかけると違うページが開いてしまうので検索した後に元のページに戻す方法も一緒に教えて欲しいのですが。 もう一つお願いします。 ゴルフのスコア表を作っているのですがある打数の人を検索して一覧で表示したいのですが方法はあるでしょうか?超初心者ではありませんがまだまだ初心者です。教えて下さいお願いします。

  • エクセルのオートフィルターの使い方

    エクセル2010で1000行程度の表からオートフィルターで必要な情報を抽出しているのですが、該当する条件を▼セルで探すのも面倒なので、所定のセルに条件を入力したらオートフィルターで抽出できる方法があれば教えてください。

  • フィルタオプションをマクロで

    1 テキストを読み込んで並べ替えなどして   表(1行目はタイトル)を作り、   フィルタをかける(マクロ) 2 フィルタオプションで必要なデータを抽出   その際に日付を手入力する   (例  A列(毎回決まった列)     2005/4/1以上 降順) 3 その後の作業(マクロ) このように1のマクロを起動して その後 2を手作業して 更に3をマクロを 起動すると言う方法をとっていますが 2の内容もマクロで作って 「日付」だけを 入力するように求められて それを入力するだけで その後の作業も自動で行うことは出来るでしょうか?

  • Excelのオートフィルタでデータ抽出するマクロについて

    オートフィルタで指定した期間のデータ抽出のマクロを作成しているのですが上手くいきません。 例えばA列に 10月29日 11月1日 11月3日 11月5日 と日付を入力しており、B列、C列にデータを入力していたとして D列1行目に10月31日、D列2行目に11月4日と入力し D列1行目からD列2行目までと指定したデータを抽出するマクロを教えていただけませんか。 マクロ初心者で、困っております。どうかよろしく御願いします。

  • エクセル・オートフィルタを使わず関数で抽出をするには

    excelのデータで、該当する項目のある行のみの抽出をオートフィルタもマクロも使用せずに、関数で行う方法があれば教えてください。     A B 1  桃太郎 123456 2  猿   122222 3  キジ  123555 4  桃太郎 122245    … 1000 桃太郎 002145 ↑このような表で「桃太郎」だけを抽出したいのです。 イメージとしては、ボックスに「桃太郎」と入力するだけで結果が一覧として出るようなものを作りたいのです。 さらにB列が昇順に並び替えされていると、なおよいのです。 随時更新するデータなので、その都度の最新の表が欲しいのです。 オートフィルタ→並べ替えをすれば簡単なのですが、エクセルを全く使えないような人がいる職場環境でして、教えるのが面倒というのとデータがぐちゃぐちゃになったら困るので、誰でも簡単にできる方法はないものかと考えています。 また環境的にマクロはあまり使いたくないのです。 よろしくお願いします。

  • エクセルで成績に順位をつける方法

    グラウンドゴルフの成績順位を決める場合、次のルールがあります。 1)スコアの少ない(小さい数字)のが上位 2)スコアが同数の場合、「1打」(ホルインワン)が多い人が上位 3)スコアが同数で、「1打」も同数の場合、「2打」の多い人が上位 4)スコア、「1打」、「2打」も同数の場合は、同一ランクとする 下記はの「順位」はRANK係数でつけた場合ですが、これを→にする方法をご教示下さい。 氏名  スコア  1打数  2打数  順位  →修正 A     66     4     12     1     1 B     66     3     14     1     2 C     71     3     14     3     3 D     72     3     15     4     4 E     72     2     10     4     5 F     74     3      9     6     7 G     74     3     11     6     6