エクセルです。

営業推進表を作成してます。シートが複数構成。シート1にその日の各担当の成績と年間推進率を1枚に集約(社員10名、商品7品目)。要は全体の推進表。
シート2は入力シート。マクロにてシート1に転記。
問題は個人別に月間推進シートがあって(シート10枚)、何日に、何をいくつ成約したかというものなのですが、シート2の一度の入力で全体の推進表と個人別月間シートに入力できる方法はないものでしょうか。
たとえば、太郎さんが、15日に、○○を、3個成約、というとき、個人別月間シートの太郎さんのシートの15日の行の○○列に3と入力したいのです。入力シートは1枚で、入力されるセルを条件によって変えることってできるのですか。
わかりずらい説明でスミマセン。どなたかご教授願います。

回答の条件
  • 1人10回まで
  • 登録:2006/03/25 12:56:58
  • 終了:2006/03/31 19:34:18

ベストアンサー

id:dzd12061 No.3

rogi073回答回数27ベストアンサー獲得回数22006/03/27 21:12:59

ポイント70pt

こんにちは、

作り直してみました。

これでいかがでしょうか?

ちなみに、前提は下記です。

'//前提

'//A列に個人名(10)、1行に商品名(7)のヘッダが並んでいる。

'//(B2~H11)に表形式でデータが入っている。

'//AD1に今日の日付が入っている。

'//A列の個人名がそのままシート3以降のシート名になっている。

'//個人シートは、A列に日付、1行に商品名(7)のヘッダが並んでいる。

'//ここで、この商品名とシート2の商品名は同じ名前が入っていて同じ順番になっている。

'//シート2AD1の日付の書式と個人A列の日付の書式は同じ。

'//個人月間成績は(B2~H3*)に入っていけばいい。

Sub test()

Dim EigyouSeiseki(10, 7) As Variant '営業成績(個人名、商品名)

Dim pToday As Variant '日付

Dim DayCell As Integer '日付セルの取得

'入力データを取得

For i = 1 To 10

For j = 1 To 7

'営業成績を配列として取得

EigyouSeiseki(i, j) = Sheets(2).Cells(i + 1, j + 1)

Next j

Next i

'日付を取得

pToday = Sheets(2).Cells(1, 30)

'各個人シートをループ

For i = 1 To 10

'入力日付の位置を検索

'初期値の設定

DayCell = 1

'日付セルの取得

Do

DayCell = DayCell + 1

Loop Until Sheets(Cells(DayCell, 1).Value).Cells(DayCell, 1).Value = pToday

'ループで個人営業成績を個人シートへ入力

For j = 1 To 7

Sheets(Cells(i + 1, 1).Value).Cells(DayCell, j + 1).Value = EigyouSeiseki(i, j)

Next j

Next i

End Sub

id:yayoi317

重ね重ね本当にありがとうございます。

個人別シートは

 商品A 商品B 商品c …

1

2

3

4

5

のようになっています。

シート2は毎日のFAX報告のため、AD1にTODAYを入れてます。

我流で勉強中のため、ファイルを見ながらでないとピンと来ないのがお恥ずかしい限りです。

明日ご報告いたします。

2006/03/28 18:15:42

その他の回答(2件)

id:dzd12061 No.1

rogi073回答回数27ベストアンサー獲得回数22006/03/25 14:14:06

ポイント10pt

ちょっと理解しきれていないかもですが、

・入力シート2の入力としては、

 担当者、月日、商品、個数の4個で

 そのデータが、集計表シート1と各自のシートに入力されれば

 いいということでいいのでしょうか?

・であれば、集計表シート1へは現行のマクロでOKで、

 各自のシートへのデータ移行が問題だと。

・それもマクロで可能です。

 入力後書き込み操作としてマクロを起動して、

 マクロの中で

  ・担当者名をキーにして、個人用ファイルを開き、

  ・月日をキーにシートを選択

  ・月日および商品名でシート内セル位置を検索

  ・見つけ出したセルに個数を入力

 という操作をすればOKになるのでは?

これをとりあえず、マクロで書くと以下な感じ?

Sub test()

Dim IndFileName As String '個人ファイル名

Dim ProductName As String '商品名

Dim MonthDay As Date '月日

Dim pNumber As Integer '個数

Dim month As Integer '月

Dim day As Integer '日

'入力データを取得(セルは任意に設定ください)

IndFileName = Cells()

ProductName = Cells()

MonthDay = Cells()

pNumber = Cells()

'個人ファイルを開く

MonthDay = Cells(1, 7)

Workbooks.Open Filename:=IndFileName+".xls"

'月日を月と日に分解

month = Format(MonthDay, "m")

day = Format(MonthDay, "d")

'月シートの選択

Sheets(month).Select

'入力位置検索

Dim SearchCol As Range

Dim SearchRow As Range

Cells(1, 1).Select

'

'日にちの位置を検索(Column側が日にちとした場合)

Set SearchCol = Cells.Find(What:=CStr(day) + "日", After:=ActiveCell, LookIn:=xlFormulas, LookAt _

:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _

False, MatchByte:=False, SearchFormat:=False)

'商品名の位置を検索(Row側が商品とした場合)

Set SearchRow = Cells.Find(What:=ProductName, After:=ActiveCell, LookIn:=xlFormulas, LookAt _

:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _

False, MatchByte:=False, SearchFormat:=False)

'検索した位置に入力

Cells(SearchRow.Row, SearchCol.Column) = pNumber

End Sub

id:yayoi317

dzd12061さん

早速のご回答ありがとうございます。返事が遅くなってスミマセン。

個人情報等の問題で、ファイルは会社のパソコンにありますので今日早速やってみます!

朝出勤前でしたので、よく読んでませんでした。

シートの説明をしますと

すべてのシートが同じブック内にあります。

・シート2(入力シート)

 個人別が10行、商品別が7列あり、AD:1にTODAYを入れ、営業日報として使用します。入力開始マクロにて前日の実績をクリアし1枚で1日分の内訳を入力します。

・シート3~12(個人別シート)

 1シート1名分の月間実績記録です。月間スケジュール表のような様式です。この各シートは毎月はじめにリセットして、毎月使いまわします。月間記録はペーパーベースで残すためです。

2006/03/27 18:20:23
id:ttamo No.2

たも回答回数175ベストアンサー獲得回数292006/03/25 23:26:51

ポイント10pt

http://www2.moug.net/bbs/exopr/20060313000022.htm

↑これみたいなことでしょうか。

それとも単に↓これ?

http://www.excel.studio-kazu.jp/lib/e2j/e2j.html

id:yayoi317

ttamoさんありがとうございます。

説明がうまくできずにスミマセンでした。

入力シートは毎日同じシートを繰り返し使い、個人別シートはいわば、月間スケジュール表のようになっていて、当日の行に入力できればなぁという無精な考えでした。再度チャレンジしてみます!

2006/03/27 07:23:50
id:dzd12061 No.3

rogi073回答回数27ベストアンサー獲得回数22006/03/27 21:12:59ここでベストアンサー

ポイント70pt

こんにちは、

作り直してみました。

これでいかがでしょうか?

ちなみに、前提は下記です。

'//前提

'//A列に個人名(10)、1行に商品名(7)のヘッダが並んでいる。

'//(B2~H11)に表形式でデータが入っている。

'//AD1に今日の日付が入っている。

'//A列の個人名がそのままシート3以降のシート名になっている。

'//個人シートは、A列に日付、1行に商品名(7)のヘッダが並んでいる。

'//ここで、この商品名とシート2の商品名は同じ名前が入っていて同じ順番になっている。

'//シート2AD1の日付の書式と個人A列の日付の書式は同じ。

'//個人月間成績は(B2~H3*)に入っていけばいい。

Sub test()

Dim EigyouSeiseki(10, 7) As Variant '営業成績(個人名、商品名)

Dim pToday As Variant '日付

Dim DayCell As Integer '日付セルの取得

'入力データを取得

For i = 1 To 10

For j = 1 To 7

'営業成績を配列として取得

EigyouSeiseki(i, j) = Sheets(2).Cells(i + 1, j + 1)

Next j

Next i

'日付を取得

pToday = Sheets(2).Cells(1, 30)

'各個人シートをループ

For i = 1 To 10

'入力日付の位置を検索

'初期値の設定

DayCell = 1

'日付セルの取得

Do

DayCell = DayCell + 1

Loop Until Sheets(Cells(DayCell, 1).Value).Cells(DayCell, 1).Value = pToday

'ループで個人営業成績を個人シートへ入力

For j = 1 To 7

Sheets(Cells(i + 1, 1).Value).Cells(DayCell, j + 1).Value = EigyouSeiseki(i, j)

Next j

Next i

End Sub

id:yayoi317

重ね重ね本当にありがとうございます。

個人別シートは

 商品A 商品B 商品c …

1

2

3

4

5

のようになっています。

シート2は毎日のFAX報告のため、AD1にTODAYを入れてます。

我流で勉強中のため、ファイルを見ながらでないとピンと来ないのがお恥ずかしい限りです。

明日ご報告いたします。

2006/03/28 18:15:42

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません