[[20131029142202]] 『伝票番号』(キカク) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『伝票番号』(キカク)

 下記のようにA列に番号を振りたいと思います。
 A1の番号はセルD1の値(101)、以下連番、連続した5行までは同番号、999までいったら   101からはじまる。
 考えてたら知恵熱がでてきました。他作業列追加、番号シート追加など、なにか方法ありましたらお願いいたします。(VBAでもokです)

 A     B
 101 データ
 101 データ
 101 データ
 101 データ
 101 データ
 102 データ
 102 データ

 103 データ
 103 データ

 104 データ


 こういうことでしょうか。
 =MOD(INT((ROW(A1)-1)/5),1000-$D$1)+$D$1
(Mook) 2013/10/29(火) 15:08

 最初にA1:A5に101と入力して、
 A6=IF((A1+1)>999,$A$1,A1+1)

 A6を下にコピー。

(天邪鬼) 2013/10/29(火) 15:11


 こんにちは

 マクロだと、

 Sub test()
    Dim v As Variant
    Dim i As Long
    Dim j As Long
    Dim x As Long
    Dim s As Long

    s = Range("D1").Value

    With Range("B1", Range("B" & Rows.Count).End(xlUp))
        v = .Value
        x = .Cells.Count
        For i = 1 To x
            If v(i, 1) = "" Then
                j = 0
            Else
                If i > 1 Then
                    If v(i - 1, 1) = "" Then
                        s = s + 1
                    End If
                End If
                v(i, 1) = s
                j = j + 1
                If j = 5 Then
                    s = s + 1
                    j = 0
                End If
            End If
        Next
        .Offset(, -1).Value = v
    End With
 End Sub

 こんな感じでしょうか?

(ウッシ) 2013/10/29(火) 15:26


 A1 =D1
 A2 =A1 A5までコピー。

 A6 =IF(A1+1>999,D$1,A1+1)
 A7 =A6 A10までコピー。

 A6:A10を下へコピー。
 
(GobGob) 2013/10/29(火) 15:31

すみません、説明不足でした。
 データはDBから読み込む度に位置(空白行の位置)がかわります。
(キカク) 2013/10/29(火) 15:43

 データのブランクは2つ以上続かないとして
 A1:101
 A2:=IF(B2="","",A1)
 A3:=IF(B3="","",IF(A2="",IF(A1=999,101,A1+1),A1))
 A5までコピー。
 A6:=IF(B6="","",IF(A5="",IF(A4=999,101,A4+1),IF(COUNTIF(A1:A5,A5)=5,IF(A5=999,101,A5+1),A5)))
 下へコピー。
(NB) 2013/10/29(火) 16:16

 こんにちは

 999、忘れてました。

 Sub test()
    Dim v As Variant
    Dim i As Long
    Dim j As Long
    Dim x As Long
    Dim s As Long

    s = Range("D1").Value

    With Range("B1", Range("B" & Rows.Count).End(xlUp))
        v = .Value
        x = .Cells.Count
        For i = 1 To x
            If v(i, 1) = "" Then
                If s = 999 Then s = Range("D1").Value - 1
                j = 0
            Else
                If i > 1 Then
                    If v(i - 1, 1) = "" Then
                        s = s + 1
                    End If
                End If
                v(i, 1) = s
                j = j + 1
                If j = 5 Then
                    s = s + 1
                    j = 0
                End If
            End If
        Next
        .Offset(, -1).Value = v
    End With
 End Sub

(ウッシ) 2013/10/29(火) 16:36


皆様、短時間でレス頂きありがとうございました。
 頭良すぎです!
 ウッシーさんのマクロが良い感じでしたので使わせ頂きました。
 999も追加して頂き本当に感謝です。
(キカク) 2013/10/29(火) 16:43

 今更

 A1 =D1
 A2 =IF(B2="","",IF(OR(MOD(COUNTIF(A$1:A1,A1),5)=0,B1=""),IF(MAX(A$1:A1)+1>999,D$1,MAX(A$1:A1)+1),A1))

 A2を下へコピー
 
(GobGob) 2013/10/29(火) 16:54

 不具合ありますな。

 A2 =IF(B2="","",IF(OR(COUNTIF(OFFSET(A1,-MIN(4,ROW(A1)-1),0,MIN(5,ROW(A1))),A1)=5,B1=""),IF(LOOKUP(1,0/(A$1:A1<>""),A$1:A1)+1>999,D$1,LOOKUP(1,0/(A$1:A1<>""),A$1:A1)+1),A1))
 
(GobGob) 2013/10/29(火) 17:24

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.