重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

毎月5とび毎に各得意先の回収率表を作成しています。
オフコンデータをエクセルデータに転送して、回収期間(9/1~9/5)などのような見だしや、その期間の合計金額を出してデータの体裁を整えています。
営業担当者別に分けてそれを作成しなければならないのですが、そのような作業を簡単に出来る方法はないでしょうか。(分けるのはフィルタを使ってます。)
エクセルについて詳しくはないので、コピーや合計金額を出すくらいの初歩的な機能しか使えません。(データの数は毎月違っているのでセルの指定が出来ません。)関数やマクロなどを使えばこのような処理は簡単でしょうか。
エクセル以外でも、アクセスやファイルメーカーなどのソフトも使った方がいいでしょうか。
これだけでは分かりにくいかもしれませんが、
宜しくお願い致します。

A 回答 (3件)

 私もあるデータを半旬毎にとりまとめています。


 簡単なとりまとめであれば、エクセルが楽だと思います。

 さて、毎月5飛び毎→半旬毎として話を進めます。
 
 仮にエクセルのsheet1のA列に1行目から任意の行まで年月日が入力されているとします。
 B列に1行目から任意の行まで担当者が入力されているとします。
 C列に1行目から任意の行まで金額が入力されているとします。
 任意の列(例えばD列)1行目に、以下の計算式を入力してください。
 なお、各列、各行は、お使いのデータシートの該当する列行に置き換えてお読み下さい。
=MONTH(A1)+0.1*IF(ROUNDUP(DAY(A1)/5,0)=7,6,ROUNDUP(DAY(A1)/5,0))&B1
(A1には年月日(シリアル値)の日付、B1には担当者名)
 以上の式から、月.半旬番号(1~6)担当者名が表示されます。
 以下、任意の行まで本式をコピーして下さい。
 一方、任意のセル(別シートでも可)に、月.半旬番号が入力された列と、担当者名を列記した行の集計表を作成し、対応する各セルに、以下の式を入力します。
 仮に、表はA列に2行目から任意の行まで月.半旬、1行目にB列~任意の列まで各担当者名を入力してあるとすると、B2のセルに、
=SUMIF(Sheet1!$D:$D,$A2&B$1,Sheet1!$C:$C)
 以下、対応するセルに本式をコピーしてください。
 ついてはこの表の各セルに、担当者別に各半旬毎に集計した金額が表示されます。
 もし、月.半旬の表示でなく、あくまでも「9/1~9/5」、「9/6~9/10」・・・としたいのであれば、D列1行目には
=MONTH(A1)&"/"&IF(ROUNDUP(DAY(A1)/5,0)=7,6,ROUNDUP(DAY(A1)/5,0))*5-4&"~"&MONTH(A1)&"/"&IF(ROUNDUP(DAY(A1)/5,0)=7,31,IF(ROUNDUP(DAY(A1)/5,0)=6,DAY(DATE(YEAR(A1),MONTH(A1)+1,1)-1),ROUNDUP(DAY(A1)/5,0)*5))&B1
と入力してください。なお、A列には年月日のシリアル値が入っている必要があります。
 先程説明した集計表の月.半旬を入力した列には、かわりに「9/1~9/5」などと期間を入力しておきます。
 なお、以上の場合には、大の月には最終半旬は~31、2月は~28(閏年は~29)、その他の月は~30までの集計になります。
 日付データがテキストの場合は、
月の取り出しは=VALUE(LEFT(D1,SEARCH("/",D1,1)-1))
日の取り出しは =VALUE(MID(D1,SEARCH("/",D1,1)+1,SEARCH("~",D1,1)-(SEARCH("/",D1,1)+1)))で処理してみてください。
    • good
    • 0
この回答へのお礼

ご丁寧にありがとうございました。頑張ってみます。

お礼日時:2003/10/09 00:04

元データを名前列でソートしてください。

(必ずしも日付けでソートする必要なし)
(テストデータ)A1:C16
中野2003/10/1     12
中野2003/10/2     3
中野2003/10/6     23
中野2003/10/10     1
中野2003/10/10     33
中野2003/10/13     1
中野2003/10/17     7
中野2003/10/22     8
中野2003/10/23     8
中野2003/10/31     3
四谷2003/10/2     16
四谷2003/10/13     1
四谷2003/10/14     2
四谷2003/10/15     3
四谷2003/10/26     5
四谷2003/10/31    1
(コード)
Sub test01()
Dim t(7)
k = 1
Cells(1, 7) = "1-5": Cells(1, 8) = "6-10": Cells(1, 9) = "11-15"
Cells(1, 10) = "16-20": Cells(1, 11) = "21-25": Cells(1, 12) = "26-matu"
k = k + 1
d = Range("a1").CurrentRegion.Rows.Count
'-----
nm = Cells(1, "A")
For j = 1 To d
If Cells(j, "A") <> nm Then '名前が変ったら
GoSub kekka
End If
'----
For i = 1 To 6
If i = 6 Then
day5 = DateSerial(2003, 10 + 1, 1)
Else
day5 = DateSerial(2003, 10, i * 5 + 1)
End If
If Cells(j, "B") < day5 Then
t(i) = t(i) + Cells(j, "c") '配列に集計
Exit For
End If
Next i
nm = Cells(j, "A")
Next j
GoSub kekka
End
'-----トータルをシートに書き出し
kekka:
Cells(k, 6) = nm
For i = 1 To 6
Cells(k, i + 6) = t(i)
t(i) = 0
Next i
k = k + 1
Return
End Sub
(結果)F1:L3
1-56-1011-1516-2021-2526-matu
中野155717163
四谷1606006
(注)day5 = DateSerial(2003, 10, i * 5 + 1)
の10はInputboxなどで指定するようにしてください。
結構時間が掛かりました。本番ではどこを変えれば良いか
分かっていただけるか自信なし。
    • good
    • 0
この回答へのお礼

すごいですね。私の知識では。。。ご丁寧に有り難うございます。頑張ります!

お礼日時:2003/10/09 00:09

データー数は、処理をされる毎に違うのは わかりますが、レイアウトは 同じですよね。

A列には「受付日」B列には「回収日」など・・・・・・・・・・・・
具体的に オフコンのデーター例があればもっといい案をアドバイスしてくれる方が 沢山いると思いますが・・・・・・・
    • good
    • 0
この回答へのお礼

確かにおっしゃる通りですね。早速のお返事ありがとうございました。

お礼日時:2003/10/09 00:05

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