まだ初心者ですが、会社から指示をされ四苦八苦しながら取り組んでいます。是非ともご教示ください。
(作成したいVBA)
・あるデータファイル(注釈1)から、特定の条件(注釈2)に合致するセルを抽出して別シートにコピーしたい。
・コピーに際しては、日付の古い順に並べ替えたい。
(注釈:その1)
・データファイルはデータ数が変化します。(列は変わりません)
(注釈:その2)
・データファイルには下記のデータが入っています。
A B C
内容 数量 日付
1 麦 10 9/10
2 米 15 2/15
3 麦 12 3/12
4 粟 14 9/18
・特定の条件とは、本日から3か月以上経過している内容を日付の古い順番に別用紙にコピーする、というものです。
・別シートには、取引内容ごと(「麦」「米」「粟」)にデータを集約し、1枚のシートにて完成させたいのです。
零細な職場で、唯一エクセルを触れるとのことで特命を受けてしまいました(汗)。VBAの本を買ってきてもどうしてもできません。なおかつ、1週間で作成せよとの指示で本当に困っています。どうかいい知恵をお貸しください。
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
ANo3様の回答と同じですが・・・
考え方はいろいろありますが、以下の様に分解して考えれば良いのでは?
分解したひとつひとつの処理は、マクロの自動記録を利用すればほとんどそのものに近いものが記録されます。(若干の修正が必要ですが)
1)元データ(多分1シートですよね?)を変更しないために、最初にシート全体を別シートにコピーする。(以下は別シート上での処理)
2)日付をキーにして、全体を並べ替える。
(「データ」-「並べ替え」を利用して昇順にする)
3)日付欄を上から調べていって、3ヶ月以内以降のデータを消す
4)最後に「内容」を第一キーに、「日付」を第二キーに指定して、全体を並べ替え
以上で求めるものができます。
少しだけ知識が必要なのは、3)の日付を調べてゆくとこるぐらいでしょうか。ここだけは自動記録ではやりにくいので。
日付は、データがシリアル値になっていれば、そのまま比較できます。
(並べ替えもこれを利用しています)
2)で並べ替えているので、それぞれの日付が3ヶ月前よりも大きいか小さいかで必要なデータと消してしまいたいデータの境目を知ることができます。
同じ判定の繰返しなので、ループといわれる繰返し構文を使用するか、VLOOKUPなどのようなワークシート関数を利用しても可能です。
ご回答ありがとうございました。まず、マクロの記録で努力してみて、ご指導いただいたところまでたどり着きたいと思います。丸投げになってしまった質問に本当にありがとうございました。
No.4
- 回答日時:
こんなの下記のロジックでやればよいのではないですか。
やるべきことを下記のように分解する。(下記はやり方の1方法ではあるが)
(1)データ最下行の行番号を取得する(仮にdとする)
参考 常套手段
d = Worksheets("Sheet1").Range("A65536").End(xlUp).Row
(2)データの第1行目から第d行まで繰り返し(ForNextなど利用)
(3)データ行各1行について
3ヶ月前より小(前)のデータか判別(日付は日付シリアル値という整数なので、実体は3ヶ月前の日を示す整数より大か小かの判別に過ぎない。(IF文利用)
(4)日付が小であれば、麦ー>Sheet2、米ー>Sheet3、栗ー>Sheet4、・・のシートに振り分けてデータを、該当シートに代入すればよい
(5)その際、各シートの最下行の下に追加しないといけないので、
(1)で使った方法を使える。d+1行に代入。
(6)(4)のシートの振り分けは、シート名を麦、米、栗・・にして下記で処理するか
参考 泥臭いが、シート名が「麦」シートを作っておいて、テストでやってみて
Sub test01()
Dim sh
For Each sh In Worksheets
If sh.Name = "麦" Then
sh.Range("A1") = "麦シート"
End If
Next
End Sub
あるいは
麦ー>Sheet2->麦、米ー>Sheet3、・・の対応表をプログラムコードの中で持つて、それで割り出すかどちらか。
(7)全行終了後、必要があれば、各シートの所定列で希望のようにソートする。
(マクロの記録を勉強)
ーー
上記の丁寧なヒントでも、コードが作れないようなら、このレベルの課題に対して、まだ経験不足ということだと思う。
ご丁寧にありがとうございました。こんなにすぐ回答できるなんて、すごいですね。ご指導いただいた内容は理解できました。(とても自分で作成するレベルではないことがわかりました。)
一方的な質問に対し、ここまで丁寧な回答をいただき本当に感謝しています。経験不足を少しでも補っていきます。
No.3
- 回答日時:
オートフィルタで商品と日付で絞込み、全体をコピーして、別シートに貼り付け、貼り付け先を日付昇順で並べ替えといった方法でもできます。
必要なら、それをマクロの自動記録を行えば良いでしょう。「今日の日付を自動で与えて絞り込むにはどうすれば良いの?」といった個々の不明点について質問すれば、回答が得られやすいです。参考URL:http://www.eurus.dti.ne.jp/~yoneyama/Excel/filte …
この回答への補足
ご回答ありがとうございました。不慣れですが、ご指導いただいたとおりの方法で現在試行錯誤中です。
今度はより丸投げではなく、適切な質問ができるところまで努力します。本当にありがとうございました。
No.2
- 回答日時:
丸投げ禁止ですよ
なぜVBAでなければいけないの
この程度なら、内容、日付をキーにして並べ替え
結果をコピーすれば終わりでしょ
どうしても、マクロでやりたいなら
この作業をマクロの記録で記録してアレンジすればよいのでは
ご指摘のとおりです。自分なりに短期集中で取り組んでいますが、とても付け焼刃で太刀打ちできるものではなく、甘えてしまいました。何歳になっても絶対やってやると思っていましたが、悔しいです。もう一度丁寧に勉強し直します。
本当にすぐ回答をつけていただき、ありがとうございました。
No.1
- 回答日時:
・本日から3か月以上経過している内容を日付の古い順番に別用紙にコピーする
・取引内容ごと(「麦」「米」「粟」)にデータを集約し、1枚のシートにて完成させたい
コピー先のシート状況がよく見えないのですけど。
この回答への補足
すいません。指示された内容をそのまま記載しました。会社から求められているのは、次のような完成品だと理解しています。
(コピー先シートの状況)
・1枚であること
・取引内容ごとにまとまった3か月経過した取引を古い順に表示
上司に確認したところ、麦の取引、米…というように、横に取引を並べ、縦には必要とするセル(取引日、数量)をコピーするというものです。言葉足らずで申し訳ありません。これでご理解いただけますか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Excel(エクセル) 複数セルデータを別シートの単一セルにコピーしたい。(詳細をご参照ください) 1 2022/12/14 15:08
- Visual Basic(VBA) 【困っています2】VBA 追加処理の記述を教えてください。 2 2022/08/26 11:42
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- Excel(エクセル) シートが違う2枚のエクセルシートにある数値を別シートにコピーしたい(VBA?) 8 2022/03/31 12:24
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Excel(エクセル) 【マクロ】同じフォルダ内にある複数ブックから1つのブック内の1シートにデータを集めたい 6 2022/09/28 18:16
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) 指定月分の顧客データファイルを統合して並べ替え、所定の場所に貼り付ける 3 2022/09/10 07:55
- Visual Basic(VBA) 複数指定セルの可視セルのみを別シートに転記するVBAについて 2 2022/05/27 21:19
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・2024年に成し遂げたこと
- ・3分あったら何をしますか?
- ・何歳が一番楽しかった?
- ・治せない「クセ」を教えてください
- ・【大喜利】看板の文字を埋めてください
- ・【大喜利】【投稿~12/17】 ありそうだけど絶対に無いことわざ
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・【穴埋めお題】恐竜の新説
- ・我がまちの「給食」自慢を聞かせてっ!
- ・冬の健康法を教えて!
- ・一番好きな「クリスマスソング」は?
- ・集合写真、どこに映る?
- ・自分の通っていた小学校のあるある
- ・フォントについて教えてください!
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelの中央値の複数条件について
-
Excel 複数のシートからグラフ...
-
ExcelVBAで、指定したシートに...
-
IF, ISNUMBER, INDIRECTの組み...
-
エクセルで入力シートから別シ...
-
Excel ハイパーリンク先のセル...
-
エクセルのワークシートが重く...
-
エクセルで入力→日付を自動判別...
-
エクセルについて質問です 日付...
-
Excelで入力用シートのデータを...
-
エクセルでフィルターで抽出し...
-
[エクセル]先頭シートから最終...
-
日付を基準にして別シート転記...
-
Excelの選択肢をポップアップリ...
-
EXCEL VBA 一致しないデータの...
-
VBA セルの値と同じ名前のシー...
-
指定した日付の範囲内でデータ...
-
エクセル マクロを使って日々...
-
質問:特定文字列から空白行ま...
-
Excelで数値→文字列変換で指数...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelVBAで、指定したシートに...
-
エクセルで入力シートから別シ...
-
VBA セルの値と同じ名前のシー...
-
Excel ハイパーリンク先のセル...
-
IF, ISNUMBER, INDIRECTの組み...
-
Excel 複数のシートからグラフ...
-
エクセルのワークシートが重く...
-
VBAのoffsetの動き方について教...
-
エクセルVBA:表の内容を担当者...
-
Excelの中央値の複数条件について
-
エクセル マクロを使って日々...
-
エクセルについて質問です 日付...
-
EXCEL VBA 一致しないデータの...
-
【Excel】VLOOKUP関数で複数の...
-
指定した日付の範囲内でデータ...
-
Excelの選択肢をポップアップリ...
-
該当するデータを書式設定ごと...
-
エクセル 毎日更新する表のデ...
-
エクセルで入力→日付を自動判別...
-
エクセル自動の年月
おすすめ情報