• ベストアンサー

最新の日付が含まれているセルの取得するマクロ

A1セルに2019/3/24 田中 A2セルに2019/3/24 鈴木 A3セルに2019/3/25 山田 (日付のあとの文字はAlt+Enterで改行されています) という入力がされているとき 最新の日付のA3セルを A4セルに表示するにはどうすればいいでしょうか? 日付のみの検索方法ならネットにあったのですが 文字が含まれている場合がどうしたらよいかわかりません。 ちなみにA1からA3セルの日付がすべて同じなら A1セルをA4セルに表示で大丈夫です。 A4セルに関数式などを入れておき取得できるのであれば その方法でもいいです。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • watabe007
  • ベストアンサー率62% (476/760)
回答No.3

>最新の日付のA3セルをA4セルに表示 A4セルに表示するのは最新の日付セルのアドレスなら Sub Test2()   Dim c As Range, mydate As Date, str As String   For Each c In Range("A1:A3")     If Split(c.Value, vbLf)(0) > mydate Then       mydate = Split(c.Value, vbLf)(0)       str = c.Address(0, 0)     End If   Next   Range("A4").Value = str End Sub A4セルに表示するのは最新の日付セルの氏名なら Sub Test3()   Dim c As Range, mydate As Date, str As String   For Each c In Range("A1:A3")     If Split(c.Value, vbLf)(0) > mydate Then       mydate = Split(c.Value, vbLf)(0)       str = Split(c.Value, vbLf)(1)     End If   Next   Range("A4").Value = str End Sub

yyrd0421
質問者

お礼

ありがとうございます。 test3のmydate とstr を組み合わせて目的のことが行えました。 ありがとうございました。

その他の回答 (2)

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.2

>セルの取得するマクロ なのでマクロで Sub Test()   Dim c As Range, mydate As Date   For Each c In Range("A1:A3")     If Split(c.Value, vbLf)(0) > mydate Then mydate = Split(c.Value, vbLf)(0)   Next   Range("A4").Value = mydate End Sub

yyrd0421
質問者

補足

ありがとうございます。 頂いたコードを試したところ 最新の日付は表示されたのですが そのあとの文字(A3セルなら山田)が表示されません。 名前まで表示するにはどうすればよいでしょうか?

  • aokii
  • ベストアンサー率23% (5210/22062)
回答No.1

B1セルに以下の式を入れ、 =TEXT(LEFT(A1,FIND(CHAR(10),A1)-1),0)+0 B1セルを下にB3セルまでドラッグコピーし、 A4セルに以下の式を入れてみてください。 =MAX(B:B)

yyrd0421
質問者

補足

ありがとうございます! 申し訳ございません。 Z列ぐらいまで既に入力がされていて B列には入力出来ない状況です。 他の方法などはございませんでしょうか?

関連するQ&A

  • エクセル 最新日付以外のデータを合計する

    下表があるとしまして、 氏名 日付 買上金額 鈴木 5月5日 10 鈴木 5月6日 60 鈴木 5月7日 100 鈴木 5月9日 400 田中 5月4日 100 田中 5月7日 200 山田 5月1日 600 山田 5月2日 200 山田 5月3日 300 1970 氏名毎に、最新日付以外の合計を計算したいのです。 この場合、鈴木さんが170 田中さんが100 山田さんが800の合計1070がそれぞれの氏名の最新以外データの合計となりますが、これらを自動的に計算できないでしょうか? よろしくおねがいします。

  • Excelでセル内改行

    お世話になります。 早速ですがExcelで複数のセルに文字列が入力されている時、それらの文字を結合する場合はCONCATENATE関数を使いますよね? で、この応用(なのか判りませんが)で例えばセルA1に"改"の文字が、セルB1には"行"の文字が入っているとき、セルC1に 改 行 と改行させて2行で表示したいのですが、セルC1に"=CONCATENATE(A1,CHAR(13),B1)"とやってもうまくいきませんでした。 Alt+Enterで手入力する以外に関数、マクロ等で何かいい方法がありますか? よろしくお願いします。

  • エクセルで条件に一致する複数の列を取得するには

    下のような「得点」という名前のシートがあります。 (「田中」のセルがA1です。)  [ 田中 ][ 10 ]  [ 山田 ][ 21 ]  [ 佐藤 ][ 76 ]  [ 鈴木 ][ 53 ] 別の「組」シートで、以下のようになっています。  [ A ][ 田中 ]  [ A ][ 佐藤 ]  [ B ][ 山田 ]  [ C ][ 鈴木 ] ここで、「組」シートのどこか空いているセル(例えばF1)に、 「Aの組の点数の合計値」を表示したいと思っています。 考えた方法としては、  1.まず「組」シートのA1からD1を順番に見て、  2.値が「A」になっている場合のみ、そのひとつ右の名前を取得して、  3.「得点」シートで、取得した名前を探し、その点数を取得し、  4.それを全て足す という感じなのですが、どういう式を書けば良いのか分かりません。 度々すみませんが、よろしくおねがい致します。

  • 【Excel 2003】 折り返しとセル内での改行

    こんにちは。 類似の質問を見つけられなかったので投稿させていただきます。 以下の方法をご教授ください。 「折り返してセルの全体を表示される」のチェックを外した際に alt + Enter での改行(等)が無視されてしまうことを防ぎたい。 これは以下の手順で再現します。 (1) 「折り返してセルの全体を表示される」ボックスのチェックが 無い 状態でセルの列幅を越える文字数を入力します。 → この時点では、右隣のセルまで文字は侵入していますが、表示されます。 (2) 次に、(1)で書いた文字列の最後尾で alt + Enter を入力し、セル内改行を行います。 (3) そのセル内の2行目に再度セルの列幅を越える文字数を入力します。そしてそのセルの編集を終えます。(Enter押下) → すると自動的に「折り返してセルの全体を表示される」が適用されるようで(これも納得はいかないのですが。。)、強引にセルの列幅に合わせられる形で全体が表示されます。 (4) しかたないので、改めて上記で編集してきたセルの書式設定から 「折り返してセルの全体を表示される」ボックスのチェックを外します。 → すると今度は、alt + Enter の改行が無かったかのように1行で表示されます。 ※ 但し、数式表示ウィンドウ(fx)では問題なく改行された状態で表示されます。 この問題の解決方法をご教授願います。 なおこの事象は、改行を含むテキストデータのコピー&ペーストでも同様に発生します。 宜しく御願いします。

  • エクセル2000 異なるセルをくっつけて表示

    こんばんは。 毎度どうもすみません。 「エクセル2000 異なるセルをくっつけて表示」について質問します。 次のような文字があり、日付、曜日、時間は書式設定により表示されてます。(設定を解除すると数字の羅列になる。)   A列  B列  C列   D列   E列 1 09/20 木  10:00  山田  名古屋 2 この表あるそれぞれの文字をひとつのセルに改行して表示させるにはどうすればいいでしょうか?  09/20  木  10:00 に  山田 さん 名古屋 で 会いましょう 上記のようにしたいのです。 「&」記号とchar(10)記号を試してみましたが、日付などが数字になりうまく表示されません。関数では無理でしょうか? やはりVBAかな。 方法があれば教えてください。 

  • Excel Alt+Enter の解除方法

    Alt+Enterでセル内で改行されている列を書式設定の文字の制御で折返しや縮小をした場合、見た目そのように表示されますが、セルそのもののAlt+Enterが残ってしまっています。 何かしらの機能や関数を使って解除する方法はありませんか?

  • Excel(2010)で氏名の頻度の求め方

    Excel(2010)で、A列に縦に 山田 鈴木 田中 山田 鈴木 山田 というように氏名の並べてある表があるとします。この表で氏名の頻度が 山田 3 鈴木 2 田中 1 というように表示できる関数または方法があるでしょうか。 この表のように項目が少なければ 山田 鈴木 田中 というセルを作っておいて、VLOOKUP関数で求められますが、実際には約500行ありその中の氏名をすべて手作業で入力するのは大変ですので、重複なくすべての氏名を抜き出すのは実際的ではありません。 以上よろしくお願いします。

  • 縦幅・横幅・フォントサイズを固定値にしたいセルへの入力で、セルから文字

    縦幅・横幅・フォントサイズを固定値にしたいセルへの入力で、セルから文字がはみ出ない様にしたいと考えています。 当初、セルに入力されたバイト数をカウントする事ではみ出た事を把握しようと考えたのですが、Alt+Enterキーを押してのセル内改行も含む為に、セル内のバイト数では、セルをはみでる事を把握しきれません。 そこで、LEN関数を用いてセル内の行数が一定値を超えた場合を把握しようと考えました。 しかしながら、Alt+Enterキーを押してのセル内改行は、CHAR(10)で拾えるのですが、セルの書式設定で「自動で折り返して全体を表示する」にチェックを入れている為、「自動で折り返し」→「改行」されるケースもあります。 この、自動で折り返して改行された場合の「改行」をカウントする方法を御教授頂きたく、質問させて頂きました。 よろしくお願い致します。

  • エクセルのセル内で改行

    A1のデータとA2のデータ(ともに文字列)を改行して一つのセル(A3)に入れたいのですが、A3に =A1&A2 では当然改行しません。 この書式で =A1&**&A2 のように**に改行コードを入れて、alt+Enterのように改行させたいのです。**に何を入れればよいでしょうか? また、別の式の書き方がありますか?

  • 1.ショートカットキー;セル内で改行 2.DATEIF関数が使えない!

    こんばんは。2つ質問が有ります。宜しくお願いします。 1.ショートカットキーについて セル内で改行するショートカットキーは、本を読んだのですが、 Ctrl+Alt もしくは Shift+Alt とあったのですが、セル内で改行できません。 セル内改行のショートカットキーを教えてください。 (OSはwindowsです) 2.DATEIF関数が使えない!    A      B       C 1 2000/01/01  2001/12/31  =DATEIF(A1,B1) 上記のようにC1に関数を入力したのですが、エラー表示になってしまいます。セルの書式設定を見ると、A1もB1もC1も、「日付」が選択されていて、表示形式も「西暦/月(2桁)/日(2桁)」になっています。 ちなみに、全て半角で入力しています。なぜエラーになるのでしょうか?

専門家に質問してみよう