dポイントプレゼントキャンペーン実施中!

お世話になります。


「,」や、「;」で、
区切られた、
定数配列や、配列数式上の、
等差連番数値を 20万個以上、

VBAを 使わず、
生成したいのですが、

何か 良い方法は、
ありますでしょうか?


宜しく お願いします。

質問者からの補足コメント

  • 済みません、
    誤記載を 認めました。


    誤記載、

    等差連番数値を 20万個以上、

    VBAを 使わず、
    生成したいのです


    訂正後、

    等差連番数値を 200万個以上、

    VBAを 使わず、
    生成したいのです
            以上、


    申し訳在りません、
    謝罪の上 訂正させて、
    ください。

      補足日時:2019/04/04 17:12
  • TRANSPOSE構文 異常(?)動作例。

    「20万を 超える、連番の 生成。」の補足画像2
      補足日時:2019/04/04 17:14
  • 例えば、

    =row(a1:a10000000)*column(a1:e1)
    等と すれば、
    連番生成 其れ自体は、
    出来るのですが、

    一次元配列に 並べ直す方法が、
    難しくて、

    手を 焼いてます。


    難関さを 示す、
    ほんの 一例として、

    =SMALL(INDEX(row(a1:a10000000)*column(a1:e1),,),①)
    此の ①の部位が、
    書けません。


    書こうとすると、
    1〜500万の 等差連続数が、
    必要になり、

    本末転倒、
    入れ子の 無限繰り返し、
    等に 陥りそうです。

      補足日時:2019/04/04 17:41
  • https://oshiete.goo.ne.jp/qa/11060267.html
    に お引っ越しします。


    有難うございました、
    引き続き お願いします。

      補足日時:2019/04/04 18:04

A 回答 (1件)

こんにちは



シートやセルは利用しても良いものと解釈しました。
ひとまず、20万行を超えられる、行数の方を利用する方法で考えてみました。

まず、必要となる等差数列をROW()に基づいた式として表します。
(例えば、 =ROW()*2-1 1,3,5…の等差数列)
この式をコピーしておいて、シートのA列全体を選択した状態で、ペーストします。
この結果、A1、A2…に1、3、5…と最終行まで表示されます。

単純な式でできないような内容でも、A列を利用してさらに関数式で値を作成することも可能でしょう。
例えば、B1セルに =A1*2 として、セルの右下をダブルクリックすれば最終行まで式がコピーされます。


配列数式等で利用する場合には、A:Aあるいは必要な範囲を切り取って参照することで、そのまま多行1列の配列として利用できると思います。
1行多列の場合も同じ方法で作成可能ではありますが、エクセルのシートは2万列もないため、残念ながら20万には程遠い数にしかなりません。

試してはいませんが、前記の多行1列の配列をTRANSPOSEで行・列の反転をさせることで、1行多列のお求めの内容にも変換することができるものと考えます。


※ そもそも20万超の要素の配列数式を、エクセルがどのくらいで計算できるのかに不安を感じますが・・・
    • good
    • 0
この回答へのお礼

有難うございます、


あぁ、間違えました、
済みませんでした。

20万では なく、
200万でした、

お詫びの上 訂正させて、
ください。


今回、
質問させて 頂いた、
骨子は、

現行 エクセルは、
100万行と 少ししか、
無いが、

最大行数を 遙かに、
超える、
連番を 生成し、

数値解析の 一回あたりの、
精細さを 益したい、

との ものなのです、

ミス 済みませんでした。


もう一点、

1万6千を 遙かに、
超えた rowナンバーを、
カラムンナンバーに 変えると、

機能 しないかも?
と 思います。


更に、

Microsoftフォーラムにも、
報告済みなのですが、

TRANSPOSE構文は 現行、
バグっていて、
思う通りに 完全には、
機能しないかと 思います。


例文、
=MAX(ROW(A1:A10))
戻り値 1、
=MAX(INDEX(ROW(A1:A10),,))
戻り値 10、
=MAX(TRANSPOSE(ROW(A1:A10)))
戻り値 1、
=MAX(TRANSPOSE(INDEX(ROW(A1:A10),,)))
戻り値 1、
=MAX(INDEX(TRANSPOSE(ROW(A1:A10)),,))
戻り値 1、


ですので、

何だか 申し訳ないのですが、
済みません。

お礼日時:2019/04/04 17:09

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!