[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『日付を数量分日付を振り分ける方法』(ニシポン)
みなさん、再び教えて頂きたいです。
下記のように、A列には日付、B列に数量が入力されており、C列に日付に対応する数量分の日付を自動に振り分けていく方法を教えて頂きたいです。
C列は日付が変わると1からスタートし、セルA7のように0の場合は次の日付に
移るという形になってほしいです。
分かる方宜しくお願い致します。
プレビューで列を揃えれなく見にくいですが、申し訳ございません。
A B C D
5 3/1 2 3/1 1
6 3/2 4 3/1 2
7 3/3 0 3/2 1
8 3/4 5 3/2 2
3/2 3 3/2 4 3/4 1
< 使用 Excel:Excel2010、使用 OS:unknown >
恐らくお呼びではないとは思いますが、 マクロで「配列で作っちゃえ!」的な考え方の例です (なんて安易な orz...)
Function ReptedArray(ListOrg As Range) As Variant Dim r As Range, rs As Long, vWrite() As Variant, i As Long, j As Long If ListOrg.Columns.Count < 2 Then Exit Function rs = WorksheetFunction.SumIf(ListOrg.Columns(2), ">0", ListOrg.Columns(2)) If rs <= 0 Then Exit Function ReDim vWrite(1 To rs, 1 To 2) For Each r In ListOrg.Rows If r.Columns(2) > 0 Then For j = 1 To r.Columns(2) i = i + 1 vWrite(i, 1) = r.Columns(1) vWrite(i, 2) = j Next End If Next ReptedArray = vWrite End Function
Sub たとえば() Dim v As Variant v = ReptedArray([A1:B4]) [C1].Resize(UBound(v), 2) = v End Sub
こうゆうのを数式だけでパッと組めちゃう人って、ホント凄いですよね。 私には無理です・・・^^;
(白茶) 2019/03/16(土) 10:21
答えではないのですね。。。
(ニシポン) 2019/03/16(土) 11:01
いいえ。数式ではなく、マクロでもできますが、それでもよいですかという意味です。
Option Explicit
Sub test() Dim 転記元行 As Long, 転記先行 As Long Dim 繰り返し数 As Long
coulumns("C;D").ClearContents
For 転記元行 = 1 To 4
For 繰り返し数 = 1 To Cells(転記元行, "B").Value
転記先行 = 転記先行 + 1 Cells(転記先行, "C").Value = Cells(転記元行, "A").Value Cells(転記先行, "D").Value = 繰り返し数
Next Next
End Sub
(マナ) 2019/03/16(土) 11:54
作業列を使います(C列)
A B C D E 5 3/1 2 1 3/1 1 6 3/2 4 3 3/1 2 7 3/3 0 7 3/2 1 8 3/4 5 7 3/2 2 9 3/2 3 10 3/2 4 11 3/4 1 12 3/4 2 13 3/4 3 14 3/4 4 15 3/4 5
C5 =SUM($B$4:B4)+1 A列のデータ最終行まで下にコピー
最終行が50行目だとして
D5 =IF(SUM($B$5:$B$50)<ROW(A1),"",LOOKUP(ROW(A1),$C$5:$C$50,$A$5:$A$50))
表示形式を「日付」にして、下にコピー
E5 =IF(D5="","",IF(D5<>D4,1,E4+1)) または E5 =IF(D5="","",COUNTIF($D$5:D5,D5))
表示形式「標準」で下にコピー
以上です (笑) 2019/03/16(土) 12:00
(ニシポン) 2019/03/16(土) 13:34
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.