advanced help
per page, with , order by , clip by
Results of 1 - 1 of about 8934 for リスト (0.007 sec.)
[[20091018082250]]
#score: 2746
@digest: bba7f9f42d2b6cd2069628a58cb1bf06
@id: 45936
@mdate: 2009-10-18T20:20:11Z
@size: 7492
@type: text/plain
#keywords: 古年 (31341), 暦元 (26192), 最古 (25673), 元年 (24788), 暦年 (19852), 元号 (19695), 暦→ (18965), 年西 (18705), 年号 (18161), 西暦 (17141), 号対 (16958), 年表 (15354), 和暦 (15325), 大正 (12617), 正14 (8558), 降順 (8128), 、和 (5992), 査値 (5283), 応表 (5142), 1989 (5070), 値以 (3686), 平成 (3673), 昭和 (3634), 時代 (3352), 年数 (3330), 検査 (3246), プダ (2961), sr (2794), リス (2700), ドロ (2299), 昇順 (2176), ンリ (2149)
『降順リストにおいて「検査値以下で最大の値」を得る法 』(はんにゃ)
課題 が 元[[20081107152709]] から ずれてきましたので 新規にしました。 現在 入力用セルで データ>入力規則>リスト>ドロップダウンリスト(DDL)により 入力をするように設定しました。 このDDLは年号です。それは現状が古い年号から昇順で書かれているために 最近年の入力が多いので 頻繁にスクロールをしないといけない。 そこで リストの記載を"平成”と元年西暦”1989”のリストを頭にした 降順にしました。 (目的は このDDLでの表示の順序を降順にするためです) さて 既に 先の昇順リストを用いて最古の西暦年nnから 年表を作成していて、 そこでは 以下のように各西暦年を順に和暦年号と和暦年 Private Sub np(y, nn, nr, sr) '年表記載 2009/10/17 コンボボックス用に年号対応表を逆順にした 'y:年表の配列(A和暦年号、B和暦年、C西暦)nn:最古年 nr:和暦元号配列 sr:その元年西暦年配列 Dim i As Long, ti As Long ' 昇順方向の元のコード y(1, 3) = nn '最古年の西暦年 ti = Application.Match(y(1, 3), sr) '照合の型を省略すると、1 を指定、検査値以下の最大の値が検索 y(1, 1) = Application.Index(nr, ti) '最古年数の元号 y(1, 2) = nn - Application.Index(sr, ti) + 1 '最古年- 最古年元号年+1=年数を得る For i = 2 To UBound(y, 1) y(i, 3) = y(i - 1, 3) + 1 '元年の年数 ti = Application.Match(y(i, 3), sr) '西暦データ y(i, 2) = y(i, 3) - Application.Index(sr, ti) + 1 '年数を得る If y(i, 2) = 1 Or y(i, 2) Mod 10 = 0 Then y(i, 1) = Application.Index(nr, ti) '元号を得る End If If y(i - 1, 2) = 1 Then '年数判定 y(i - 1, 2) = "元年" End If Next 以上で 年表の方は正常に書かれています。 そこで 上のti の箇所を ti = Application.Match(y(1, 3), sr, -1) '最古年の元号元年の西暦、降順に 並べ替えたため 検査値以上の最小の値が検索 ti = Application.Match(y(i, 3), sr, -1) '西暦データは、降順に並べ替えたため と書き換えました。 が、正常にうごきません。 y(1, 2) = nn - Application.Index(sr, ti) + 1 で Application.Index(sr, ti) が nn値より大きくなる。 Match関数では降順の場合は最後の引数を-1に設定すると指示があります。 しかし これでは 「検査値以上の最小の値」が検索されるので 例えば nn=1928の場合 検索値は1989 なり、平成元年を出します。 nr sr 平成 1989 昭和 1926 大正 1912 期待するは 1926の昭和元年です これを降順での「検査値以下で最大の値」を得る関数とか 簡単な既成のコードはありませんでしょうか? よろしく ご助言をおねがいします。 ---- ご検討頂いていれば ありがたいです。が ない物ねだりの感もします。 そこで年表をつくるための年号対応表のデータ(昇順)と 入力をいれるためのドロップダウンリスト(コンボボックスではなかった)のリストデータ(降順)とは 別別に用意して それぞれで使えば 特別の工夫をしないですむだろうと いま考え作業中です。多分問題ないとおもいます。 (言い訳ですが 大昔は容量がすくなくデータをできるだけ少なくするくせがついていた。) また不都合があれば相談します。 (はんにゃ ---- 御質問内容だけで有れば [A] [B] [1] nr sr [2] 平成 1989 [3] 昭和 1926 [4] 大正 1912 [5] [6] 検索値 場所 [7] 1925 3 ↑=IF(A7>B2,1,MATCH(A7,B2:B4,-1)+1-COUNTIF(B2:B4,A7)) こんな数式で可能かとは思います。 ただし、表の変更によって 他の部分の変更も必要に成ってきそうに思います。 前スレでみやほりんさんが >逆順のリストを別に作っておくのが早いです。 >元号なんだから、それほど頻繁な更新はないですよね。 と書いて居られるように、たびたび変更が有る様な物でも無いと思いますので もう一つリストで使用するために参照する表を 作成するのが無難に思います。 「作り始めの段階」とは、既に状況が違うと思いますので。 それと、ご自身の投稿文でない限り 質問内容が似ていても なるべく新規で質問して下さるのが良いと思います。 後でそのスレを見たときに、話が分からなくなる可能性が有りますし 現行でも「はんにゃさんへのコメントは○○さんの名前のスレでやってるぞ」 なんて、今回関係無い ○○さん の名前も覚えておく必要が出てくるので。 (HANA) ---- おせわになります。 まず、事例で検索値が 1925の場合は 大正14年ですから 元号として大正が出ないといけないので 3ではなく 4がでてくることを期待しています なお、元号、和暦年、西暦年の表記のSub関数コードはHANAさんに以前教授して頂いたまま変わりません。 他の部分(年表を書き込むコードで)も変える必要を避けるため、 データリストを昇順と降順で別別につくって 降順のリスト範囲を名前>定義ずけ、 そして 入力規則>リストリスト名 ドロップダウンするリストにして 現状正常に 入力窓で 平成以下新しい順で表示され 入力操作は動きました。 この間の工夫で コード自体は一切変えないで入力の簡便・誤書き込み回避をえることができました。 お陰で大量入力でもと、要望があるのを期待しています。 (はんにゃ ---- なお 西暦も年号のひとつとして 年号対応表に以下のように西暦を追加しても 正常に動作します。(空欄は西暦としてあつかったまま) A1和暦 元号 B1 元年 西暦 C1 時代 D1 西暦 元年 E1 和暦 元号 西暦 1 1 西暦 長徳 995 平安時代(794→) 995 長徳 長保 999 999 長保 そしてドロップダウンリストとして G1 以下のリストはデータ表で年号を入れるための 挿入>名前>定義した年号リストである G2 ?は配偶者以外使用不可。推定年号を記入、年欄半角?.ピリオッドを記入 G3 西暦 平成 昭和 大正 明治 慶応 途中略 慶長 江戸以前の元号は年号対応表よりコピー入力で。案内に従い進んでください。 リストはここまで としてあります (はんにゃ ---- >まず、事例で検索値が 1925の場合は 大正14年ですから 元号として大正が出ないといけないので >3ではなく 4がでてくることを期待しています この辺りは調整だけの問題なんですけどね。 数式を =IF(A7>B2,2,MATCH(A7,B1:B4,-1)+1-COUNTIF(B1:B4,A7)) とか =IF(A7>B2,2,MATCH(A7,B2:B4,-1)+2-COUNTIF(B2:B4,A7)) とか、マクロがどうなっているのか分かりませんが 合わせてもらえばよいと思います。 それと、たぶん [[20090627150504]]『西暦〜和暦の変換 あるいは系譜図の作成 改題』(はんにゃ) ===↓引用開始↓=== まず、和暦→西暦 と 西暦→和暦 の対応表が必要です。 「対応表」というシートに A,B列を使用して 和暦→西暦 の表 A列に、和暦 B列に、元年が対応する西暦 を入力して下さい。 年に依っては、和暦が二つ有る場合が有りますが Sheet1にどちらで入力されるか決まっていない場合は 両方記述して下さい。 C列を一列空けて、D,E列に 西暦→和暦 の表 D列に、西暦 E列に、和暦 を入力して下さい。 こちらの表は、D列が昇順に成っている必要が有ります。 ===↑引用終了↑=== ですから、A:B列の方は並びはどうでも良くて しかも、和暦も揃っていますから(南北朝時代は両方の年号が載っている) こちらを降順にして、リストの範囲として使用すれば 良かったような気がします。 ・・・記憶が曖昧なので、駄目だったら諦めてください。 (HANA) ---- ありがとうございます =IF(A7>B2,2,MATCH(A7,B2:B4,-1)+2-COUNTIF(B2:B4,A7)) ^ ^ 平成元年より新しい処理、 下に一つづらして 最後のCOUNTIFは元年の場合1を引く をマクロ化するということですね。 なるほど これなら 降順でもOKですね ひとつ 西暦を元号として ドロップダウンリストの 最初に出したい(空欄でもOKですが 説明抜きでわかるにはこれを使いたい) ときは それだけ 降順では 例外になるので コードをさらに判定のために追加しないといけないのと ?もあるので やはり別々のリストにして処理することにします。 (はんにゃ ...
https://www.excel.studio-kazu.jp/wiki/kazuwiki/200910/20091018082250.txt - [detail] - similar
PREV NEXT
Powered by Hyper Estraier 1.4.13, with 97065 documents and 608342 words.

訪問者:カウンタValid HTML 4.01 Transitional