• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:日進月歩リンク表)

日進月歩リンク表を活用したデータの貼り付け方法について

このQ&Aのポイント
  • 日進月歩リンク表を活用してデータを貼り付ける方法について知りたいです。
  • リンクされているデータをカレンダーの該当する日付の行に貼り付けるためにはマクロを使用する必要があるのでしょうか?
  • 日進月歩リンク表の使用とデータの貼り付けについて詳しく教えてください。

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

  • ベストアンサー
回答No.1

マクロを組まなくてもできます。 でも、これだけ回答されてもしょうがないのでは? B4セルに =($A$1&$B$1&A4&"日")*1 下へオートフィル セル世の書式設定でB8セルのように、曜日にします。 C4セルは =IF(ISNA(MATCH($B4,$B$21:$B$37,0)),"",INDEX(C$21:C$37,MATCH($B4,$B$21:$B$37,0))) 右へ下へオートフィル 0が表示されるのが、イマイチなら 書式設定のユーザー定義で # にするなど。

nytsm
質問者

補足

ご回答ありがとうございます。 そうですね。 各日付毎のデータはカレンダー上の各日付行に残したいのです。 どうしましょう。

その他の回答 (4)

回答No.5

マルチポストとは、、、残念です http://okwave.jp/qa/q7680055.html =HYPERLINK("#Sheet1!"&MATCH(TODAY(),Sheet1!B:B,0)&":"& MATCH(TODAY(),Sheet1!B:B,0),TODAY())

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.4

回答2です。 私の解釈が間違っていたようですね。マクロを使うことに変わりはないですがだいぶ簡略化されますね。 該当のシート上にコマンドボタンを配置し、それを右クリックして「コードの表示」を選択し、次のコードを入力します。 Private Sub CommandButton1_Click() Dim i As Integer For i = 18 To 48 If DateValue(Cells(i, 1).Value) = DateValue(Cells(51, 1).Value) Then Range(Cells(51, 3), Cells(51, 7)).Copy ActiveSheet.Paste (Cells(i, 2)) Application.CutCopyMode = False Cells(i, 1).Select Exit Sub End If Next End Sub なお、マクロを有効にするためには「開発」タブの「デザインモード」のアクティブな状態が解除さえていることが必要です。 勿論、A18セルからA48セルまでの日付は例えば2012/9/1のように入力して1日のような表示にしておくことが必要ですね。

nytsm
質問者

補足

お世話になっております。 貼り付けされたデータが、#REF!エラーになってしまうのですが、 どうしてなのでしょう。 素人ですいません。 よろしくお願いします。

回答No.3

#1です 当方の方法でできないなら、マクロを使うしかないと思います。 当方の解釈が違っているということだと思います。

nytsm
質問者

お礼

いえいえ、ありがとうございました。 今のところ、#1さんの関数を使わせていただいて、 更新日(つまり今日の分は)に値の更新する前に、 日進月歩の前日行に貼り付けるなどしております。 ありがとうございました。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

他のシートのデータは日々更新されるとなりますとマクロで対応する意外にできません。 お示しの日付の表がシート1に有るとします。 それにしても日にちと曜日だけの表では何年何月の表であるのかわかりませんので次のようにしてはどうでしょう。例えばA1セルには2012/9/1のように入力して9月のカレンダーを作るとします。A1セルについては右クリックして「セルの書式設定」の「表示形式」で「ユーザー設定」を選び種類の窓には yyyy年m月 のように入力します。これで2012年9月と表示されますね。 2行目にはA2セルから順に日付、曜日、商談数、成約数、成約率、実績、着地とG2セルまでに入力します。 A3セルには次の式を入力して下方にドラッグコピーします。 =IF(MONTH(A$1+ROW(A1)-1)<>MONTH(A$1),"",A$1+ROW(A1)-1) セルに####などが表示された場合にはA列の幅を広げます。 A1セルで指定した年月の月末の日付までが表示されますね。1日、2日のように表示させる場合にはA3セルから下方の行を選択してから右クリックし、A1セルと同様に表示形式を設定します。その際の式は d日 と入力すればよいでしょう。 次の曜日の表示ですがB3セルには次の式を入力して下方にドラッグコピーします。 =IF(A3="","",TEXT(A3,"aaa")) ここまではご質問の範囲外ですがマクロの操作に絡んできますので上のように表を作成してみてください。 次に日々入力するデータですがシート2に作成するとしてA1セルからF1セルまでに日付、商談数、成約数、成約率、実績、着地の項目名を並べます。 シート1に入力したいデータをそれぞれの項目の下方に入力します。 シート2のデータをシート1に貼り付けるために、その操作を実行するためのコマンドボタンをシート2の画面に作成します。 そのためには「開発」タブの「挿入」から「ActiveXコントロール」にある「コマンドボタン」をクリックしてからエクセル画面上で四角を描きます。その図形を右クリックして「コードの表示」を選択します。 コード記載の画面では次のマクロを入力します。 Private Sub CommandButton1_Click() Dim i, n As Long Set WS1 = Worksheets("Sheet1") Set WS2 = Worksheets("Sheet2") Application.ScreenUpdating = False i = 1 Do i = i + 1 If WS2.Cells(i, 1) = "" Then Exit Sub If Month(WS2.Cells(i, 1).Value) <> Month(WS1.Range("A1").Value) Then MsgBox WS2.Cells(i, 1).Value & "はシート1の表の月に一致していませんからコピー貼り付けることができません。" Else With WS1.Range("A3:A33") Set m = .Find(What:=WS2.Cells(i, 1).Value, LookIn:=xlValues, SearchOrder:=xlByColumns, Matchbyte:=True) n = Range(m.Address).Row WS2.Range(Cells(i, 2), Cells(i, 6)).Copy WS1.Activate WS1.Cells(n, 3).Select ActiveSheet.Paste Application.CutCopyMode = False WS1.Cells(n, 1).Select End With End If Loop Until WS2.Cells(i, 1) = "" Application.ScreenUpdating = True End Sub 最後に「開発」タブの「デザインモード」がアクティブ状態になっているでしょうからクリックして解除します。 以上で終了です。 シート2で必要なデータを入力してコマンドボタンをクリックすることでシート1にはシート2のデータがコピーして貼り付けられます。

nytsm
質問者

補足

ありがとうございます。 当方、マクロど素人でして、 下記の状況ですと、 お答えいただいたマクロはどうなりますでしょうか? お時間のある時で構いません。 よろしくお願いします。 反映元シートの名前は、『rink』シートで 他のファイルからリンクされたシートです。 そこからさらにリンク先として、表示しておりますのが、 ”集計されています~”のくだりのデータです。 その表示範囲の行は、 A51~G51 で、 A51 に=TODAY()、 B51 にはA51 の日付を曜日変換したもの、 以降、 C51 から、=rink!B21(=商談数) D51=rink!C21(=成約数) E51=rink!D21(=成約率) F51=rink!B5(=実績) G51=rink!F5(=着地) となっています。 日進月歩カレンダーは、同シート内で 集計データ上部 A18 ~G50 の範囲での表となっております。 よろしくお願いします。

関連するQ&A

専門家に質問してみよう