今の会社は見積書の番号を
(1)作成日付
(2)その日の何番目に作成された物か(ハイフン前・2桁)
(3)同じ宛先に違う見積を何枚か出す時に分ける為の番号(ハイフン後・2桁)
としています。
(例)8/1の1番目に作った見積(1枚のみ)⇒H20080101-01。
原本ファイルを“名前をつけて保存”にしてるのですが、(2)が重複してしまう事が多いので自動的にナンバリングされるようにしたいのです。
日付が自動的に入るマクロもナンバリングがされていくマクロも過去の投稿を見てわかるのですが、組み合わせ(?)になると全くどうしていいのか・・。
もしくは“左から何番目まで文字が被ると保存ができない”的な便利な機能があったらどなたかご教授願えませんでしょうか。
よろしくお願い致します。
No.2ベストアンサー
- 回答日時:
No1です。
失礼しました。
大ボケな回答でした。
再度回答します。
まず、空のワークシートを作成
"Z:\請求書No.xls"
A1 <= 作成日付
B1 <= 何番目に作成された物か
A2以下 A列 取引先名
B2以下 B列 同じ宛先に違う見積を何枚か出す時に分ける為の番号
です。
以下、マクロをステップで確認してみてください。
Sub test()
Debug.Print "佐藤商会", GetSeikyuNo("佐藤商会")
Debug.Print "鈴木商事", GetSeikyuNo("鈴木商事")
Debug.Print "佐藤商会", GetSeikyuNo("佐藤商会")
Debug.Print "佐藤商会", GetSeikyuNo("佐藤商会")
Debug.Print "鈴木商事", GetSeikyuNo("鈴木商事")
Debug.Print "山田興産", GetSeikyuNo("山田興産")
End Sub
Function GetSeikyuNo(ByVal TokName As String) As String
Application.ScreenUpdating = False
Dim SeikyuNo As String
Workbooks.Open Filename:="Z:\請求書No.xls"
Dim ws As Worksheet
Set ws = ActiveWorkbook.Sheets("Sheet1")
If ws.Range("A1") <> Format$(Now, "geemmdd") Then
ws.Range("A2:B65536").Clear
Range("B1") = 1
ws.Range("A1") = Format$(Now, "geemmdd")
Else
Range("B1") = Range("B1") + 1
End If
Dim r As Integer
For r = 2 To ws.Range("A65536").End(xlUp).Row
If TokName = Cells(r, 1) Then
ws.Cells(r, 2) = ws.Cells(r, 2) + 1
SeikyuNo = ws.Range("A1") & Format$(ws.Range("B1"), "00") & "-" & Format$(ws.Cells(r, 2), "00")
Exit For
End If
Next r
If SeikyuNo = "" Then
r = ws.Range("A65536").End(xlUp).Offset(1, 0).Row
ws.Cells(r, 1) = TokName
ws.Cells(r, 2) = 1
SeikyuNo = ws.Range("A1") & Format$(ws.Range("B1"), "00") & "-" & Format$(ws.Cells(r, 2), "00")
End If
set ws = nothing
ActiveWorkbook.Save
ActiveWindow.Close
GetSeikyuNo = SeikyuNo
Application.ScreenUpdating = True
End Function
ご教授ありがとうございます。あまりマクロ等得意ではないので時間がかかってしまいまいたが、おかげ様でできました!!
お礼が遅くなり申し訳ございません。
ご多忙中本当にありがとうございました。
No.3
- 回答日時:
>(3)同じ宛先に違う見積を何枚か出す時に分ける為の番号(ハイフン後・2桁)
同じ日付に同じ宛先に複数の見積書を出す場合
という事で
一応 関数案ですが
A B C D
日付 宛先
8月1日 A社
8月1日 A社
8月1日 A社
8月1日 B社
8月2日 B社
8月1日 B社
8月2日 C社
・・・とあるとして
C列に作業列で =A2&B2 下へたっぷりとコピィしておく
D列に
=IF(A2="","",TEXT(A2,"geemmdd")&TEXT(COUNTIF(A2:A$2,A2),"00")&"-"&TEXT(COUNTIF(C2:C$2,C2),"00"))
で下へたっぷりとコピィしておく。
C列は非表示にでもしておくとか。
D列に希望の番号が出ませんでしょうか・
No.1
- 回答日時:
請求書ナンバーをワークシート外に保存することにして、
例えば、"z:\Seikyusyo.No"
Sub aaa()
Dim No As String
Dim NewNo As String
Dim FileNum As Integer
FileNum = FreeFile
Open "z:\Seikyusyo.No" For Input As FileNum
Line Input #FileNum, No
Close #FileNum
If Left(No, 9) <> "H" & Format$(Now, "yyyymmdd") Then
'頭の9桁が違うので昨日以前のもの 初期化する
NewNo = "H" & Format$(Now, "yyyymmdd") & "-01"
Else
No = Right(No, 2)
NewNo = "H" & Format$(Now, "yyyymmdd") & "-" & Format$(Val(No) + 1, "00")
End If
Open "z:\Seikyusyo.No" For Output As FileNum
Print #FileNum, NewNo
Close #FileNum
End Sub
> もしくは“左から何番目まで文字が被ると保存ができない”的な便利な機能
ちょっと意味が分かりません
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) Excel VBA 転記について 1 2022/04/20 16:55
- Visual Basic(VBA) vbaエクセルマクロについて あるデータを作成し、デスクトップに.xlsx形式で保存するマクロを作成 2 2023/03/02 18:54
- Excel(エクセル) 【マクロ】ファイル名の日付によって、保管するフォルダを、自動選択したい 4 2023/08/16 11:24
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/21 09:28
- Visual Basic(VBA) vbaエクセルマクロについて あるデータを作成し、デスクトップに.xlsx形式で保存するマクロを作成 6 2023/03/03 18:05
- Excel(エクセル) エクセル 多数のファイルから値を抜き出したい 4 2022/12/12 16:49
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- 損害保険 火災保険に提出する外構見積もりについて 3 2022/06/05 15:17
- その他(Microsoft Office) エクセルのマクロについて教えてください。 5 2023/01/21 09:39
- Visual Basic(VBA) エクセルマクロでアニメを作る方法を教えてください。 1 2023/02/07 14:27
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
行数が不規則な一週間ごとの合...
-
文字列になっている時間をVBAで...
-
ある列、或いは、ある行のセル...
-
マクロの有効化するダイヤログ...
-
【マクロ】フォルダからエクセ...
-
Excelでの時間帯の入力
-
excel で二つのどちらかを選ぶ
-
エクセルの順位別一覧表の自動...
-
Excel 2019 のピボットテーブル...
-
エクセル 価格表から単価を呼び...
-
excelの不要な行の削除ができな...
-
エクセルで特定の範囲内から小...
-
シートAで横に並んだ項目→シー...
-
Excelが固まってしまった。
-
Excel2013のF6キー操作について
-
【関数】スペースがいくつ入っ...
-
Excelはなんで先頭の0を消すん...
-
【Microsoft Office Excel Comp...
-
西暦や和暦の表示をyyyymmdd表...
-
別シートからの文字を変更
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
[関数得意な方]教えて下さい・...
-
Excelにてある膨大なデータを管...
-
[関数について]わかる方教えて...
-
Excel初心者です。 詳しい方、...
-
excelの不要な行の削除ができな...
-
エクセル関数に詳しい方教えて...
-
INDIRECTを使わず excelで複数...
-
[オートフィルタ]で抽出された...
-
エクセルの神よ、ご回答を! エ...
-
エクセル関数に詳しい方、教え...
-
各ページの1番上の表示について
-
Excelで写真のような表を作った...
-
エクセルで不等号記号(≠)が上に...
-
数学 Tan(θ)-1/Cos(θ)について...
-
Excel 2019 は、SPILL機能があ...
-
Excelで全角を半角にしたいので...
-
条件付き書式を教えてください
-
Excel フィルターを掛けた状態...
-
[オートフィルタ]の適用範囲の...
おすすめ情報