|
みなさま こんにちは。
よく昔の事を覚えていらっしゃる ichinoseさん こんにちは。
>(以前、ここで確かJakaさんだと思いましたが、
>transpose絡みでこの事例を述べていたと思いました。
>その時みたのは、英語サイトでしたが。
>V3探そうとしたら、今現在、閲覧できませんでした)
V3で、そんなこと書いたっけかな?
しかも、英語サイト...??
と思っていたら、
ああ、この時ねと思い出しました。
この時ね、と言っても過去ログは削除されていてもう見れないと思います。
(今確認してみようとしたら、V3とつながりませんでした。)
これは、コロスケさんです。
(私は、コロスケさんと違い、英語が全くと言っていいほど解りません。
唯一、先見箱で書いた英語版ジャパニーズことわざだけ覚えてます。)
当時コロスケさんは、CSVの読み込みに「ReDim Preserve 配列」を使っちゃったんで、「transpose」の壁にぶち当たったみたいでした。
途中でコロスケさんのPCがぶっ壊れたとかで、私が配列を使ってCSVの読み込みに試行錯誤中だった事もありまして、代わりに回答させていただきました。
最終的な回答が私だったんで、コロスケさんとごっちゃになったようですね。
EXCEL97 & 2000 のワークシート関数「transpose」を使っての配列要素数の上限は、
5461個(1〜5461)までだったみたいでしたね!
(上限の個数忘れちゃったんで、前に自分でテストして出した個数ですが...。)
私は、「ReDim Preserve」で、大きな配列を値を保持しつつ拡張していくのは、コード的には書きやすそうでしたが、PCに負担がかかると思って頭に入れてなかったです。また、「transpose」に欠点がありまして...。
Dim StSt(1 to 10) As String
の配列に「0001」等を入れてある場合、
Range("A1:A10").value = StSt
だと、表示形式が標準でも文字列としてはいります。
「transpose」させるとエクセルに勝手に数字変換されてしまいます。
Sub tttt()
Dim StSt(1 To 10) As String
For i = 1 To 10
StSt(i) = Format(i, "000")
Next
Range("A1:J1").Value = StSt
Range("A2:A11").Value = Application.Transpose(StSt)
End Sub
|
|