
毎月5とび毎に各得意先の回収率表を作成しています。
オフコンデータをエクセルデータに転送して、回収期間(9/1~9/5)などのような見だしや、その期間の合計金額を出してデータの体裁を整えています。
営業担当者別に分けてそれを作成しなければならないのですが、そのような作業を簡単に出来る方法はないでしょうか。(分けるのはフィルタを使ってます。)
エクセルについて詳しくはないので、コピーや合計金額を出すくらいの初歩的な機能しか使えません。(データの数は毎月違っているのでセルの指定が出来ません。)関数やマクロなどを使えばこのような処理は簡単でしょうか。
エクセル以外でも、アクセスやファイルメーカーなどのソフトも使った方がいいでしょうか。
これだけでは分かりにくいかもしれませんが、
宜しくお願い致します。
No.2ベストアンサー
- 回答日時:
私もあるデータを半旬毎にとりまとめています。
簡単なとりまとめであれば、エクセルが楽だと思います。
さて、毎月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)))で処理してみてください。
No.3
- 回答日時:
元データを名前列でソートしてください。
(必ずしも日付けでソートする必要なし)(テストデータ)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などで指定するようにしてください。
結構時間が掛かりました。本番ではどこを変えれば良いか
分かっていただけるか自信なし。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの関数について
-
【画像あり】オートフィルター...
-
【マクロ】変数に入れるコード...
-
【マクロ】元データと同じお客...
-
【マクロ】【相談】Excelブック...
-
【マクロ】左のブックと右のブ...
-
エクセルのリストについて
-
【マクロ】数式を入力したい。...
-
【マクロ】実行時エラー '424':...
-
Office2021のエクセルで米国株...
-
他のシートの検索
-
エクセルのVBAで集計をしたい
-
【マクロ】【配列】3つのシー...
-
vba テキストボックスとリフト...
-
【マクロ】【画像あり】❶ブック...
-
【マクロ画像あり】❶1つの条件...
-
エクセルシートの見出しの文字...
-
空白のはずがSUBTOTAL関数でカ...
-
【マクロ】【画像あり】ファイ...
-
5単位で繰り上げしたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【マクロ】元データと同じお客...
-
エクセルの関数について
-
【画像あり】オートフィルター...
-
エクセルのVBAで集計をしたい
-
エクセルのリストについて
-
【マクロ】数式を入力したい。...
-
【マクロ】【相談】Excelブック...
-
Office2021のエクセルで米国株...
-
【マクロ】実行時エラー '424':...
-
他のシートの検索
-
エクセルの複雑なシフト表から...
-
【マクロ】【配列】3つのシー...
-
vba テキストボックスとリフト...
-
【マクロ】左のブックと右のブ...
-
【マクロ】変数に入れるコード...
-
エクセルシートの見出しの文字...
-
【マクロ】別ファイルへマクロ...
-
【関数】同じ関数なのに、エラ...
-
Amazonでマイクロソフトオフィ...
-
ページが変なふうに切れる
おすすめ情報