質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Q&A

3回答

8600閲覧

エクセルで最新の日付の列データを抽出する事はできますか?

ebifurai55

総合スコア35

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

0グッド

1クリップ

投稿2019/04/03 03:00

VBAマクロでたとえば

A B C D E

1 2012/5 * * * 2019/4/3
2 2011/3/11
3 2012/2/13 2017/5/11
4 2012/3/7 2014/4/4 2018/12/25

となっていた場合希望する結果は

1 2019/4/3
2 2011/3/11
3 2017/5/11
4 2018/12/25

となって欲しいのですが、空白のセルを無視して、この様な抽出方法は

できますか?あるとすればどんなマクロを組むと良いのでしょうか?

コピー&ペーストだったらいくらでもできそうなんですが、そういった操作を記録して

いけば達成できるのでしょうか?

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ハッキリ言って、「出来ます」。
日付を扱う「Date」という型を使い、「ソート」を行えば簡単に成功させれます。
プログラムは貴方の為にあえて載せません。それぐらいの事が出来ないとプログラマと名乗る事はおろか、社会人としても危ないからです。

引き続きVBAを頑張って下さい。

投稿2019/04/03 03:24

stdio

総合スコア3307

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ebifurai55

2019/04/03 11:50

ありがとうございます。精進します。 ところで実は言うと目的の最新の日付に関してはMAX関数で オートフィルしたらできました。 後学のためDataをSortして結果を求める方法について教えていただけないでしょうか?
stdio

2019/04/03 21:43

> DataをSortして結果を求める方法 酷い事を言いますが、私は貴方の上司でも教師でも親でもないのですから、それぐらいググれ!!
ebifurai55

2019/04/05 10:39

言うと思いました。知ってるふりして僕に批判的なコメントをしないでくれますか?はっきり言って邪魔です。
stdio

2019/04/08 01:44

すみません、貴方は知ってるふりと仰いましたが、「Date」という日付型の存在を知っているとか何者なんですかね? 知っているから、それ位ググればすぐに出ると申しているのですよ。
guest

0

どんなマクロを組むと良いのでしょうか?

VBA

1Sub test() 2 Dim i As Long 3 Dim j As Long 4 Dim m As Long 5 6 For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row 7 For j = 1 To Cells(Columns.Count, 1).End(xlToLeft).Column 8 If m < Rng.Cells(i, j).Value Then 9 m = Rng.Cells(i, j).Value 10 End If 11 Next 12 Cells(i, j + 1).Value = m 13 m = 0 14 Next 15End Sub 16 17Sub test1() 18 Dim r As Range 19 20 For Each r In ActiveSheet.UsedRange.Rows 21 r(1, r.Columns.Count + 1).Value = WorksheetFunction.Max(r) 22 Next 23End Sub 24 25Sub test2() 26 With ActiveSheet.UsedRange 27 With .Columns(.Columns.Count + 1) 28 .Formula = "=Max(" & .Rows(1).Address(False, False) & ")" 29 .Value = .Value 30 End With 31 End With 32End Sub 33

test-ここの質問者さんがよく書こうとしているコード風に書いてみました。
(変数の使い方がこれぞプログラミングって感じですね)
test1-エクセルVBAなのでワークシートで使うMax関数をVBAで使って探してます
test2-エクセルなので、シート上に数式を入れてエクセル君に計算させたあと、数式を消すため値で上書きしてます。

処理速度でいったら下のコードほど速いかと思います。
動作確認してないので、上手く動かなかったらごめんなさいです。

参考になれば。。。

あぁ、ソートしてもいいけど当然元の表が崩れますよね?
別のシートに転記してから作業をして、
結果だけを持ってくるようにする工夫が必要になるかと思います。
やりかたは、Webで検索し、
その操作を「マクロの記録」機能でVBAに翻訳したら、
どんなコードになるかわかると思います。
わからない用語はとりあえずWebで検索してみて、
それでも解らなかったらその旨を告げて聞きましょう。

投稿2019/04/03 12:32

mattuwan

総合スコア2136

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ebifurai55

2019/04/05 11:41

ありがとうございます。疲れてたので助かります。またよろしくお願いします。貴方の様に親切な方が多い世の中になって欲しいです。大上段で煽る人もいる中まるで仏様のようです
mattuwan

2019/04/05 13:35

僕は単に横槍を入れただけです。 文字だけのコミュニケーションだと、厳しい意見を余計にきつく感じることも多々あります。 深刻に受け止める必要はないですが、忠告は真摯に受け止めるべきです。 この回答を読んで、本気で勉強する気になってくれたら幸いです。
mattuwan

2019/04/05 13:44

P.S. >あるとすればどんなマクロを組むと良いのでしょうか? 基本的に↑のような質問の仕方は、どこのサイトでもルール違反です。 マクロの作成依頼と同意と読めるからです。 とはいえ、そこを突っ込んでも仕方ないと思うので、サンプルを書きました。 今一度、質問ポリシーを読んで下さい。
guest

0

列数がどの程度かわかりませんが
あらかじめ大きめの範囲を指定しておけば
VBAを組まなくともMAX関数で出来ます

投稿2019/04/03 03:56

mitsu-wan

総合スコア136

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問