プロが教える店舗&オフィスのセキュリティ対策術

このような表に、
日付曜日商談数成約数成約率実績着地
1土
2日
3月
4火
5水
6木
7金
8土
9日
10月
11火
12水
13木
14金
15土
16日
17月
18火
19水
20木
21金
22土
23日
24月
25火
26水
27木
28金
29土
30日

下記のデータが他のシートからリンクされています。
(これは日々、更新されています。)
日付     商談数  成約数 成約率   実績     着地
9/3月12件 2件  17% ¥160,000 ¥890,000
このリンクされているデータを上記のカレンダーの該当する日付の行に貼り付けられていくにはマクロを組むしかないのでしょうか?

A 回答 (5件)

マクロを組まなくてもできます。


でも、これだけ回答されてもしょうがないのでは?


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が表示されるのが、イマイチなら 書式設定のユーザー定義で # にするなど。
「日進月歩リンク表」の回答画像1

この回答への補足

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

どうしましょう。

補足日時:2012/09/03 19:13
    • good
    • 0

マルチポストとは、、、残念です


http://oshiete.goo.ne.jp/qa/7680055.html

=HYPERLINK("#Sheet1!"&MATCH(TODAY(),Sheet1!B:B,0)&":"&
MATCH(TODAY(),Sheet1!B:B,0),TODAY())
    • good
    • 0

回答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日のような表示にしておくことが必要ですね。

この回答への補足

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

補足日時:2012/09/05 18:48
    • good
    • 0

#1です


当方の方法でできないなら、マクロを使うしかないと思います。
当方の解釈が違っているということだと思います。
    • good
    • 0
この回答へのお礼

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

ありがとうございました。

お礼日時:2012/09/04 18:43

他のシートのデータは日々更新されるとなりますとマクロで対応する意外にできません。


お示しの日付の表がシート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のデータがコピーして貼り付けられます。

この回答への補足

ありがとうございます。
当方、マクロど素人でして、
下記の状況ですと、
お答えいただいたマクロはどうなりますでしょうか?
お時間のある時で構いません。
よろしくお願いします。

反映元シートの名前は、『rink』シートで
他のファイルからリンクされたシートです。
そこからさらにリンク先として、表示しておりますのが、
”集計されています~”のくだりのデータです。
その表示範囲の行は、
A51~G51 で、

A51 に=TODAY()、
B51 にはA51 の日付を曜日変換したもの、
以降、
C51 から、=rink!B21(=商談数)
D51=rink!C21(=成約数)
E51=rink!D21(=成約率)
F51=rink!B5(=実績)
G51=rink!F5(=着地)

となっています。


日進月歩カレンダーは、同シート内で
集計データ上部 A18 ~G50 の範囲での表となっております。
よろしくお願いします。

補足日時:2012/09/04 17:57
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!