advanced help
per page, with , order by , clip by
Results of 1 - 1 of about 1385 for ������������ #N/A (0.016 sec.)
[[20201210163848]]
#score: 6930
@digest: 9e919e84f44d1fa57b68219a7bc6f2d9
@id: 86065
@mdate: 2020-12-14T01:37:52Z
@size: 4224
@type: text/plain
#keywords: ア単 (28429), rarea (14996), testvalue (13353), 証下 (7380), 果") (3812), 解明 (3281), 元配 (2649), エリ (2362), ィ( (2327), 次元 (2246), 値貼 (2218), 果シ (1963), リア (1437), formular1c1 (1090), debug (1040), 単位 (999), 配列 (984), 容易 (934), 半平 (872), 平太 (851), ル範 (755), print (736), 2020 (681), value (642), テス (547), ロパ (526), 金) (482), (半 (474), 太) (470), パテ (469), range (449), 出力 (447)
『セル範囲を値貼り付け』(しのみや)
結果シートのセル範囲に式を入れて、値貼り付けをしたかったので With Sheets("結果") with .Range("C4:C13,C15:C19,C21:C27,C29:C33,C35:C41,C43:C52,C54:C58,T4:T12,T14:T17,T19:T26,T28:T38,T40:T43,T45:T49,T51:T55") .formulaR1C1="=RC[1]+RC[2]" .Value = .Value end with End With このようにしました。 そうすると、C列は問題なく T列がC4のセルを値貼り付けしたようになりました。 少し調べてみたのですが、列が変わると2次元配列になる?のでしょうか。 Range("C4:C13").Copy Range("C4").PasteSpecial Paste:=xlPasteValues このように、一塊の範囲でコピー&ペーストをしていくのでしょうか。 *先日OffsetやResizeを勉強したところなのですが、 こちらが使えるのでしょうか < 使用 Excel:Excel2010、使用 OS:Windows10 > ---- へー、面白い現象ですね・・と言ったら不謹慎か。 我々、凡人ユーザーは RangeオブジェクトのValueプロパティ(取得と設定)が どのような振る舞いをするのか分かっていないことを痛感させてくれますね。 泥縄的解決策としては、エリア単位の処理でどうですか? Sub test篠() Dim rArea As Range With Sheets("結果") With .Range("C4:C13,C15:C19,C21:C27,C29:C33,C35:C41,C43:C52,C54:C58,T4:T12,T14:T17,T19:T26,T28:T38,T40:T43,T45:T49,T51:T55") .FormulaR1C1 = "=RC[1]+RC[2]" For Each rArea In .Areas 'エリア単位に値化 rArea.Value = rArea.Value Next End With End With End Sub (半平太) 2020/12/10(木) 17:31 ---- > そうすると、C列は問題なく T列がC4のセルを値貼り付けしたようになりました。 因みに、C列でも問題は生じています。 (半平太) 2020/12/10(木) 17:55 ---- Valueプロパティの振る舞いを調べるために下記のような簡単なテストをしてみます。 Sub testValue() Dim a a = Range("A1:A3,A6:A8").Value Debug.Print UBound(a) & "," & UBound(a, 2) End Sub イミディエイトウィンドウには 3,1 と出力されます。 3×1の2次元配列になってます。 そこで、 Sub testValue() Dim a a = Range("A1:A3,A6:A8").Value Debug.Print a(1,1) Debug.Print a(2,1) Debug.Print a(3,1) End Sub を実行すると、A1からA3セルの値が出力されます。 Rangeで複数のセル範囲(エリア)を指定しても、Valueは最初のエリアだけ配列で返すということのようです。配列が複数のエリアを持つということはできませんので当然の結果と言えます。 ということで、半平太さんの提示されたコードのようにエリア単位で処理するしかないということになります。 (hatena) 2020/12/11(金) 00:28 ---- https://docs.microsoft.com/ja-jp/office/vba/api/excel.range.value マイクロソフトのHPでも >最初の領域に複数のセルが含まれている範囲の場合、 >Valueは、最初の範囲の個々のセルに含まれる値の >2次元配列を含むバリアント型 (Variant ) の値を返します。 と解説されていますね (とおりすがり) 2020/12/11(金) 07:28 ---- Valueの取得については、比較的簡単に理解できるが、 Valueの設定の方はそんなに単純じゃない。 規則性はあるように見えますが、解明するのは容易じゃないし、 解明できたところで使い道は限られているので、 あれこれ考えるのは時間の無駄と言う気がします。 (半平太) 2020/12/11(金) 07:53 ---- 参考までに、下記A、B列を配列にいれて、D,E,F,Gに代入した1例を挙げておきます。 Sub 飛び飛びテスト() Dim v v = Range("A1:B3,A5:B6,A8:B11").Value Range("D1:G3,D5:G6,D8:G11").Value = v End Sub 行 _A_ _B_ _C_ __D__ __E__ __F__ __G__ 1 A J A J #N/A #N/A 2 B K B K #N/A #N/A 3 C L C L #N/A #N/A 4 5 E M A C K #N/A 6 F N B J L #N/A 7 8 G O A J #N/A #N/A 9 H P B K #N/A #N/A 10 I Q C L #N/A #N/A 11 J R #N/A #N/A #N/A #N/A 何かマニアックな使い方ができそうな気がしないでもない。 (半平太) 2020/12/11(金) 09:33 ---- ありがとうございます エリア単位で進める方法があるのですね… 自力で調べていて、 わかったようなわからないような状態でしたが、 いろんな検証下さり理解が深まりました。 丁寧に回答下さりありがとうございました。 (しのみや) 2020/12/14(月) 10:37 ...
http://www.excel.studio-kazu.jp/wiki/kazuwiki/202012/20201210163848.txt - [detail] - similar
PREV NEXT
Powered by Hyper Estraier 1.4.13, with 97012 documents and 608132 words.

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