• ベストアンサー

Excel 2007 マクロ 日付けを反映

Excel 2007 マクロ 日付けを反映 Sheet1とSheet2の同じIDがあれば、Sheet1のC列の商談に入っている日付をSheet2の該当する週に矢印で表示して、矢印の中に商談という文字を入れたいです。 「Sheet1とSheet2の同じIDがあれば」の部分は自分で作成できます。 下記の部分はマクロで実現することは可能でしょうか。実現可能でしたら、お教えください。 「Sheet1のC列の商談に入っている日付をSheet2の該当する週に矢印で表示して、矢印の中に商談という文字を入れたい」 完成図を添付します。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

この質問は、明らかに人に作ってもらうため内容ですね。 あまり凝った内容だと、レスが付きにくいと思います。何週目と出す計算が面倒です。 Sheet2 の矢印を入れるセルの高さは大きめにしたほうがよいです。 セルの高さに影響されます。 '// Sub Test1() Dim sh1 As Worksheet Dim sh2 As Worksheet Dim shp As Shape Const myTxt As String = "商談" Set sh1 = Worksheets("Sheet1") Set sh2 = Worksheets("Sheet2") With sh1  Set rng = .Range("C2", .Cells(Rows.Count, 3).End(xlUp))  Application.ScreenUpdating = False  For Each c In rng    If c.Value <> "" And IsDate(c.Text) Then     j = Application.Match(c.Offset(, -1).Value, sh2.Columns(2), 0)     If Not (IsError(j)) Then      i = Int((Day(c.Value) + Weekday(c.Value - Day(c.Value))) / 7 + 0.9)      If ChkObject(sh2.Cells(j, i + 4), sh2) = False Then       PutArrow myTxt, sh2.Cells(j, i + 4), sh2      End If     End If    End If  Next Application.ScreenUpdating = True End With End Sub '// Function PutArrow(myTxt As String, rng As Range, sh As Worksheet) '矢印を書き入れる Dim l As Double, t As Double, w As Double, h As Double With sh   l = rng.Left: t = rng.Top: w = rng.Width: h = rng.Height + 5 'h:高さ   With .Shapes.AddShape(msoShapeRightArrow, l, t, w, h)    .TextFrame.Characters.Text = myTxt    .TextFrame.VerticalAlignment = xlVAlignCenter    .Line.ForeColor.SchemeColor = 40    .DrawingObject.Font.Bold = True   End With End With End Function '// Function ChkObject(rng As Range, sh As Worksheet) As Boolean 'オブジェクトの重複を避けるための関数  Dim shp As Shape  Dim flg As Boolean  For Each shp In sh.Shapes   If Not Intersect(rng, shp.DrawingObject.TopLeftCell) Is Nothing Then    flg = True    Exit For   End If  Next  ChkObject = flg End Function '// Sub AutoChapeDel() 'オプション '右矢印だけ削除 Dim shp As Shape With ActiveSheet  For Each shp In .Shapes   If shp.AutoShapeType = msoShapeRightArrow Then     shp.Delete   End If  Next End With End Sub

hyogara777
質問者

お礼

ご回答ありがとうございます。詳細なマクロを記載して頂きまして非常に助かりました。今後はあまり凝らない内容で自分でマクロが作成できるようにしたいと思います。

関連するQ&A

  • エクセルVBAマクロ検索について

    エクセルで検索してフラグを立てるマクロを教えてください。 A列  B列   C列   D ・・・・・ NO.  日付1  日付2  というリストがあり、A列からNOを検索してB列に日付のフラグを立てる作業をしたいのですが、 まず日付を入力するボックスで設定させてから、A列のIDを検索し、 該当IDのB列にその日付をフラグ入力させるというものです。 このときフラグ入力された該当IDのある列が表示されるようにします。 もしも既に日付フラグが立っているものがあれば、「重複です」等のメッセージボックスが出るか、 またはC列に新たな日付フラグが立つようにしたいです。 それと、上記マクロでA列を参照してB列にフラグという内容を違う列に変える場合(同類の違うリストでもこのマクロを活用したいため)、参照列とフラグ列はマクロでどこを直せばいいのか教えていただけると助かります。 いろいろ自力で調べては見たのですが、知識不足でお力を貸していただけると幸いです。 よろしくお願いいたします。 

  • エクセルマクロで日付検索について

    エクセルのマクロで日付を検索するマクロについて質問です。 ブックAのシート1のA列に A1 2017/3/13 A2 2017/4/1 A3 2017/4/19 A4 2017/5/16 A5 2017/7/17 A6 2017/9/5 というような日付が入っています。 ブックBのシート1のA1セルに2017/6/3と入力してマクロを実行した際に その日付に一番近い一つ前の日付を探し、見つけた日付のB列のセルを ブックBのシート1のA2セルに表示したいです。 今回の例であれば2017/6/3に対してブックAのシート1のA列はA4セルが当てはまり その当てはまったA4セルの1つ横のB4セルの内容をブックBのシート1のA2セルに表示するということです。 よろしくお願いします。

  • EXCELでの検索マクロを作りたいのですが

    マクロの初心者です。氏名の検索マクロを作成したいのですが分かりません。 A列:名前 B列:郵便番号 C列:住所 と 名前等のデータを(ランダムに)入力したシート1を作成し、 シート2にシート1の「A列:名前」から性(たとえば青木)で検索して検索ボタン(マクロボタン)を押して該当データを表示させるようにしたいのですが。

  • Excelでマクロ設定したが反映されない(初心者です)

    Excelでマクロを設定したのですが、なぜかきちんと反映されません。 以下、主な作業(実際の作業とは少し違いますがだいたい主な作業)を記載してみました。なぜ反映されないのか分からないので、もしお分かりになる方がいらしたら教えてください。必要な情報が足りない場合は、付け足します!マクロ初心者、というか、Excelも関数をたまに使う程度なので、基本から間違えてたりするかもしれませんがお願いいたします。 ※一連の作業がまずワークシートを1枚増やして、その後、必要なデータを貼り付け、さらに作業にうつります。ということで、キリのいいところで作業を2つに分けています。 【STEP1】 新しいマクロの記録 ok 挿入 ワークシート Sheet4タブを a と変更 Sheet1タブを b と変更 Sheet2タブを c と変更 Sheet3タブを d と変更 記録終了 【STEP2】 新しいマクロの記録 ok タブabcdを選択 作業グループの状態で、 全体の文字サイズを10に変更 行を3行挿入 A1セルの文字サイズを16に変更 4行目を選択し、文字位置を中央揃え A4・B4・C4・D4・E4・F4のセル色を青に変更 シートaのA1にaと入力 シートbのA1にbと入力 シートcのA1にcと入力 シートdのA1にdと入力 シートaとシートcとシートdを選択 作業グループの状態で、 B列・C列を選択 桁区切りスタイルに変更 シートcを選択 C列・D列を選択 桁区切りスタイルに変更 G4セルを青に塗りつぶし 記録終了 保存 (Book1.xls) 新規作成 マクロ Book1.xls!Macro1 実行 ★シートabcdにそれぞれ必要なデータを貼り付ける。 マクロ Book1.xls!Macro2 実行 ⇒シートdのみにマクロで記録させたものが反映されている。 他のシートは部分的に反映されたりしている。

  • EXCEL VBA マクロ 日付

    こんばんわ。 EXCEL VBA マクロ の日付について質問があります。 セル"A1"で"年"(例:2008)、セル"B1"で"月"(例:5)を指定します。 C1からC500くらいまで(毎日増えていきます)日付が入っています。 A1、B1で指定した年月と同じC列の日付を 10桁スラッシュ区切りの形式(例:2008/05/15)で 右隣のセル(D列)にコピーしたいんです。 困ったことにC列は形式が決まっているわけではありません。 たとえば、2008年5月15日の場合、 ・20080515・2008年5月15日・2008.05.15・2008.5.15 ・2008/05/15・2008/5/15・08/05/15・2008-5-15 その他、いろいろ考えられます。 これをマクロでやるにはどうすればいいでしょうか。 毎月一回実行します。 日付の形式をチェックするところで やり方がわからなくて困っています。 よろしくお願いします。

  • 自動で採番と日付を入力するマクロ

    Sheet1のC列に何かを入力すると、A列に1から番号が振られていき、B列には入力した日付が 入っていくマクロを作りたいです。ご教授教えていただければ幸いです;

  • エクセル 抽出マクロについて

    はじめまして。マクロ初心者です。 エクセルで抽出結果を別シートにコピーしたいのですが、 抽出条件が2列にわたっています。 A     B      C      D 日付   タイトル   分類(あ)  分類(い) 11/22   テレビ    3      2 12/15   ラジオ    1      4 11/18   雑誌     2      5 …というような感じです。 例えば分類が「2」のものを抽出したい時に、 ●シート1のあるセルに「2」と入力してマクロを実行。  ↓ ●シート2に以下のように結果をコピーして表示。 A       B 日付     タイトル 11/22     テレビ 11/18     雑誌 という具合にしたいのです。(C列、D列は表示しない) データはシート3に入力されていて、今後どんどん増えていく予定です。 エクセルは2007です。 本やホームページを参考に試行錯誤したのですが、うまくいきません…。 どなたかご回答よろしくお願いいたします。  

  • Excelで日付を反映せる時に

    いつもお世話になってます。 WinXP Office2003です。 色々試したのですがうまい方法が見つからず ご指導頂ければ幸いです。 シート1のA1セルに9月2日と入れます。 シート2のA1セルに「=sheet1!A1&”お受け取り”」 と入れています。そうすると結果は 「9月2日お受け取り」と表示されるのですが問題は シート1のA1セルでここの書式設定を日付にしてしまうと結果が「38281お受け取り」となってしまいます。 過去ログやその他のサイトでユーザー定義やT関数などを色々試していたのですがうまくできません(ノ_・、) 現在は文字列でちゃんと月日を打って入力してますが 今後は私以外の人も作業するので9/2と入れたら9月2日と文字列表示されるようないい方法はないでしょうか?もしくはシート1のAセルの表示は書式設定の日付で●月○日を選択して表面上は9月2日でセル内は2004/9/2となっていてもシート2のAセル側で「9月2日お受け取り」と表記されるようにはできないでしょうか? よろしくお願い致します。

  • エクセルのマクロについて【長文です。】

    はじめまして。 今、仕事の中でマクロを使った処理を行おうとしています。 手順は下記の通りです。 【1】アクセスからデータをエクスポートする。 【2】エクスポートしたデータをエクセルで開く。 【3】エクセルの中のデータを表にまとめる。 ごく簡単にご説明すると、このような手順となります。 ここで、皆様のお力をお借りいたしたく、質問いたしました。 【2】と【3】の間で行う、作業なのですが、 アクセスからエクスポートしたデータは日付が「'20070827」のように、 文字列となって表示されてしまいます。 これをマクロで2007/8/27という表示にしたいと思います。 【3】の表へは日付でVLOOKUPを使い一覧にまとめています。 さらに、日付は自動で入る仕組みにしてあります。 はじめのうちは量が少なかったので、置換や区切り位置で どうにかしのいできたのですが、シート数が多くなってしまい、 とても時間がかかってしまいます。 マクロの登録にもチャレンジしてみましたが、 並び位置が変わってしまったりと不都合が出てしまいました。 出来れば、そのブックを開けた段階で日付が変更されるような マクロがありましたら、ぜひ教えてください。 よろしくお願いいたします。

  • エクセル2013 マクロ ご教示ください

    1行目は見出し Sheet1 A列に品番 B列に個数 C列に注文日 D列に納入日 Sheet2 A列に品番 B列に品が納入される週単位の数値 (1、2、4・・・等) Sheet1のA列~C列が入力された時、 Sheet2のA列を参照してSheet1のA列と合致した品番が Sheet2で見つかったら Sheet1のD列 = Sheet1のC列 * Sheet2のB列の数値x7日 を、表示させたいです。 合致する品番が無い場合は 該当なし と表示させたいです。 どうか宜しくお願い致します。

専門家に質問してみよう