[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『for each in で処理』(kuki)
例えば
trange.addressが$A$1:$D$1
frange.addressが$G$5
として
for each in でtrangeを処理する場合
frangeから下方向にtrangeの値を順番に書き出すにはコードはどのようになりますか?
参考
|[A]|[B]|[C]|[D]|[E]|[F]|[G]|[H] [1]|a |b |c |d | | | | [2]| | | | | | | | [3]| | | | | | | | [4]| | | | | | | | [5]| | | | | | |a | [6]| | | | | | |b | [7]| | | | | | |c | [8]| | | | | | |d |
< 使用 Excel:Microsoft365、使用 OS:Windows10 >
仮にコピーペイストを使うとして、不明点は、書き込み先のセルの指定ですか? set toRng = [G5] としておいて、書き込みしたつど set toRng = toRng.Offset(1) と移動させる、でしょうか。
繰り返しを使わなくても、 (1)形式を選択して貼り付け(行列の入れ替え) (2)TRANSPOSE関数の使用 などで対応するほうが自然でしょうか。 365なら数式で簡単にできるのかな?
(abc) 2023/03/11(土) 15:33:02
Sub subuuu() Dim i As Long Dim r As Range i = 5 With Worksheets("Sheet1") Set r = .Range("$A$1:$D$1") For Each c In r .Cells(i, "G") = c i = i + 1 Next End With End Sub ^^; m(__)m (隠居Z) 2023/03/11(土) 15:40:34
Dim r Dim R_Num As Long Dim C_Num As Long R_Num = trange.Row C_Num = trange.Column
For Each r In cellRange Cells(R_Num, C_Num).Value = r R_Num = R_Num + 1 Next
上記は、OKですが
下記のように替えると何も書き出されない?
Cells(R_Num, C_Num).Value = r.resize(2,1)
レンジの1行下も含めての意味ですが間違っていますか?
(kuki) 2023/03/11(土) 15:54:32
変えてみましたが、
Cells(R_Num, C_Num).Value = r と同じ文字列しか表示されません。
(1行下の文字列が拾えていません。)
(kuki) 2023/03/11(土) 16:44:37
上記では、以下のように上側がダブって表示される
|[A]|[B]|[C]|[D]|[E]|[F]|[G]|[H]|[I] [1]|a |b |c |d | | | | | [2]| 1| 2| 3| 4| | | | | [3]| | | | | | | | | [4]| | | | | | | |a |a [5]| | | | | | | |b |b [6]| | | | | | | |c |c [7]| | | | | | | |d |d
(kuki) 2023/03/11(土) 16:49:41
お世話になりました。
以下で自己解決しました。
For Each r In cellRange Cells(R_Num, C_Num).Value = r Cells(R_Num + 1, C_Num) = r.Offset(1, 0) R_Num = R_Num + 2 Next
(kuki) 2023/03/11(土) 17:01:20
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.