[[20100814175726]] 『日付+連番』(konomi) ページの最後に飛ぶ

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

 

『日付+連番』(konomi)

 お世話になります。分かりましたら教えてください。

「やりたいこと」

 G1に日付を入力後G2にsheet2A列の最終行+1番号を作成する。
 例)
 20100701・・20100702・・20100703 と
 日付が変わると
 20100801・・20100802・・20100803 と連番が「1」にものる

「sheet1」

 [e]            [f]             [g]
 [1]日付		         2010年7月2日	
 [2]番号 		20100701	

 G2=TEXT(G1,"yyyymm")&TEXT(COUNTIF(sheet2!A:A,G1),"00")

 自分の式は連番にはならないです。^^;;
 教えてください。よろしくお願いします。


 >G1に日付を入力後G2にsheet2A列の最終行+1番号を作成する。

 Sheet2のA列には何が入っているのですか?
 (サンプルが不足気味に感じます)

 Countifを使っていると云うことは、
 単なる最終行+1を求めるものとは思えないです。。

 (半平太) 2010/08/14 21:02

 解答ありがとうございます。
 A列にあるのは
 例)にある番号です。

 最初は連番でやりましたが、
 年月で連番したほうがわかりやすいと、、
 数式で出来ないかと投稿しました。

 konomi

 私には疑問が多すぎです。

 ただ、質問内容に関する質疑が続くのは好みません。
 以下は、推測(妄想?)の産物です。

 G2セル =TEXT(MAX(TEXT(LOOKUP(9^8,Sheet2!A:A),"0-00-00")+1,TEXT(G1,"yyyy-mm")),"yyyymmdd")

 私のレスはこれが最終です。

 (半平太) 2010/08/15 10:57

 半平太様説明不足ですみません

 頂いた式を試したところエラーになり思い通りの結果を得ませんでした。。。。
 「sheet1」は納品書になります。納品した物品は[sheet2」転記しています。
 そのための年+月毎に管理番号つけたいです。
 前は手動で入力していましたが、間違いが多く自動にしたいと考え模索中です。

 G1に日付入力後[sheet2」A列を検索し七月は02まであるのでそれを+1をG2に表示したい。

「sheet1」

    [e]            [f]             [g]
 [1]日付		         2010年7月2日「日付型」	
 [2]番号 		201007-03	  「数値型」

 [sheet2」

      [A]
 番号「数値型」
 [1] 201007-01
 [2] 201007-02

 月が変わる時G1に日付入力後[sheet2」A列を検索し八月はないので01に戻ってG2に表示したい。
 「sheet1」 

    [e]            [f]             [g]
 [1]日付		         2010年8月2日「日付型」	
 [2]番号 		201008-01	  「数値型」

 [sheet2」

      [A]
 番号「数値型」
 [1] 201007-01
 [2] 201007-02
 [3]201007-03

 うまく説明できましたでしょか?
 雑な条件ですが、関数で出来ると助かります。
 よろしくおねがいします。

 (konomi)


こんにちは

 G2 =IF(G1="","",IF(COUNTIF(Sheet2!A:A,TEXT(G1,"yyyymm")&"*")>0,TEXT(G1,"yyyymm")&"-"&TEXT(COUNTIF(Sheet2!A:A,TEXT(G1,"yyyymm")&"*")+1,"00"),TEXT(G1,"yyyymm")&"-01"))

では、どうでしょうか?

(ウッシ)


 [sheet2」
        [A]
 番号「数値型」
 [1] 201007-01  →20100701の数値なの?
 [2] 201007-02  →同じく20100702の数値なの?

 もし、上記のとおり「数値」で表示形式で、000000-00 としてあれば、、
 前述の半平太さんの提示された数式で "行ける" と思います。
 G2=TEXT(MAX(TEXT(LOOKUP(9^8,Sheet2!A:A),"0-00-00")+1,TEXT(G1,"yyyy-mm")),"yyyymm-dd")
                                                                           ^^^^^^^^^
 (kei)

こんにちは

番号「数値型」ですか。

数値で表示形式で 000000-00 なら上の数式は使えないです。

(ウッシ)


 ウッシ様 keiさま 

 感激です><ありがとうございます。
 この数式はどんな風に組み立てましたか?
 勉強させてください。

 ユーザ設定の数値000000-00ではなく 。普通の数値00000000です。

 (konomi)

こんにちは

 LOOKUP(9^8,Sheet2!A:A) は Sheet2 の A列の最下行の数値を調べていて、

 TEXT(LOOKUP(9^8,Sheet2!A:A),"0-00-00")+1 で 1アップして、その数と Sheet1 の G1 を比較して

 MAX(TEXT(LOOKUP(9^8,Sheet2!A:A),"0-00-00")+1,TEXT(G1,"yyyy-mm"))

 大きい方を、"yyyymm-dd" に

 =TEXT(MAX(TEXT(LOOKUP(9^8,Sheet2!A:A),"0-00-00")+1,TEXT(G1,"yyyy-mm")),"yyyymm-dd")

 テキストフォーマットしてますね。

 Sheet2 の A列が昇順にソートされていない場合と、連番が日付の範囲を超えると
 エラーになりますよね・・・多分。

(ウッシ)


 ウッシ さん

 なるほどありがとうございます。

 ウッシさんの数式はすんなり使えて理解できましたが、

 >=TEXT(MAX(TEXT(LOOKUP(9^8,Sheet2!A:A),"0-00-00")+1,TEXT(G1,"yyyy-mm")),"yyyymm-dd")
 はエラーになります。

 なぜか分かりませんか??^^;;;
 9^8←は何か分かりませんか?LOOKUPを使用しているので検査値?「G1]のことではないのですか??
 (Konomi)


こんにちは

 という事は、Sheet2 の A列 には「201007-01」というようなハイフンの入ったデータが入力されているんですね?

半平太さん、keiさんの数式は Sheet2 の A列 に「20100701」というような数値が入っている事が前提です。

 9^8 は最下行の数値を調べるときのお決まりです・・・多分。

(ウッシ)


 ウッシ さん

 できたー!ありがとうございます。^^
 ようやくウッシ さんとkeiさんのゆってる意味が分かりまし。^^
 いつもは意見していますが、すごいの一言に尽きます^^

 本当にありがとうございます。

 (konomi)


問題発生です。><

せっかく数式理解できたのに(T0T)お助けください。
私の説明不足で招いた結果です。。。。

 [e]            [f]             [g]
 [1]日付		         2010年7月2日「日付型」	
 [2]番号 		201007-01	  「数値型」
 [3]-------------詳細----------------------------
 [4]品名   数量
 [7]ノート   2
 [8]鉛筆   20
 [9]印刷用紙 100

まくる出転記する↓本来の形です。

 [sheet2」
      [A]
 番号「数値型」
 [1] 201007-01  ノート   2
 [2] 201007-01  鉛筆   20
 [3] 201007-01   印刷用紙 100

 数式導入後結果が↓伝票番号が変わってしまいます。
 [sheet2(数式使用結果)」番号の部分がおかしくなります。
      [A]
 番号「数値型」
 [1] 201007-01  ノート   2
 [2] 201007-02  鉛筆   20
 [3] 201007-03   印刷用紙 100
 
 改善策
 マクロを値のみコピーすると、数式では値を認識できないのか
 例)[sheet2(数式使用結果)」転記後次の番号は04なはずなのに↓01のままです。

 [e]            [f]             [g]
 [1]日付		         2010年7月2日「日付型」	
 [2]番号 		201007-01	  「数値型」

 やはり数式では難しいでしょか?マクロでないと出来ない?

 分かりましたら教えてください。><

 (konomi)

こんにちは

読み返しても何が書いてあるのか分からないですよ。

Sheet1 の G2 にどの数式が入っていて、Sheet2 の A列の実際の値はどうなっているのですか?

マクロで転記する時に、Sheet2 のA列には「201007-01」が転記されるのか「20100701」が
転記されるのかも教えて下さい。

(ウッシ)


 すみません^^;;

 >Sheet1 の G2 にどの数式が入っていて、Sheet2 の A列の実際の値はどうなっているのですか? 
 G2=TEXT(MAX(TEXT(LOOKUP(9^8,Sheet2!A:A),"0-00-00")+1,TEXT(G1,"yyyy-mm")),"yyyymm-dd")
 >Sheet2 のA列には「201007-01」が転記されるのか「20100701」が転記されるのかも教えて下さい。 
 は20100701です。

 一つの伝票に一つの番号のみにしています。
 ただ、商品は複数なのです。
 番号が2010701の場合
 番号+商品
 [1] 20100701  ノート   2
 [2] 20100701  鉛筆   20
 [3] 20100701   印刷用紙 100
 にしたいですが、それが連番になってしまいました。
 [1] 20100701  ノート   2
 [2] 20100702  鉛筆   20
 [3] 20100703   印刷用紙 100

  
 (konomi)

こんばんは

 連番になってしまうのはマクロの方の問題では?

 > 転記後次の番号は04なはずなのに↓01のままです。
 それは、商品という項目の存在を最初から条件に入れていないからです。
 質問する時には、影響の有る条件は全て提示しないとこういう事になります。

 =IF(G1="","",IF(SUMPRODUCT((INDIRECT("Sheet2!A1:A"&COUNT(Sheet2!A:A))>INT(TEXT(G1,"yyyymm")&"00"))*(INDIRECT("Sheet2!A1:A"&COUNT(Sheet2!A:A))<=INT(TEXT(G1,"yyyymm")&"99")))>0,INT(TEXT(G1,"yyyymm")&"00")+SUMPRODUCT((INDIRECT("Sheet2!A1:A"&COUNT(Sheet2!A:A))>INT(TEXT(G1,"yyyymm")&"00"))*(INDIRECT("Sheet2!A1:A"&COUNT(Sheet2!A:A))<=INT(TEXT(G1,"yyyymm")&"99")))+1,INT(TEXT(G1,"yyyymm")&"01")))

 こっちの数式で試して下さい。

(ウッシ)


 ウッシさん

 ありがとうございます。だめでした。。。
 一行ずつ転記しているのが問題かもです。マクロの方少し調べて見ます。
 ありがとうございました。><

 (konomi)

こんばんは

 上の数式は、

 > 転記後次の番号は04なはずなのに↓01のままです。

 に対する解決策です。
 ダメでしたか?

 連番になってしまうのはマクロの問題だと思いますけど、一行ずつ転記してるなら
 転記を始める前に自動計算を止めて転記が終わったら自動計算するようにすればいいかと思います。

    Application.Calculation = xlCalculationManual
    Application.Calculation = xlCalculationAutomatic

(ウッシ)


 ウッシさん

 できたーーー(^0^)/
 ありがとうございます。

 >上の数式は、
 ↓解消しましたが、、、、連番に戻ってしまいます。
 > 転記後次の番号は04なはずなのに↓01のままです。

 ↓でばっちりです。大変勉強になりました。数式だのこんなアクシデントが有るんですね。
   >Application.Calculation = xlCalculationManual
     >Application.Calculation = xlCalculationAutomatic
 ウッシさんが最後まで付き合ってくれたお陰です。本当にありがとうございます。^^

 (konomi)

コメント返信:

[ 一覧(最新更新順) ]


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