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

エクセルVBAの事で教えてください。

やりたいこと。

セルB3をコピーしてB4に張り付けてF9を1クリック

セルB3をコピーしてB5に張り付けてF9を1クリック

セルB3をコピーしてB6に張り付けてF9を1クリック

こんな感じでB100まで貼り付けをしたいです。

マクロの記録をするのが手間なのでVBAのソースを教えていただけないでしょうか?

・・・・

大晦日で申し訳ありませんがよろしくお願いいたします。

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

  • 補足ですいません。

    当方、あまりマクロの事は分かりません。

    手動でマクロの記録をするぐらいです。

    話を戻して、試しに手動でマクロの記録をしました。

    B3をコピーして、B4に値を貼り付け。F9をクリック。
    B3をコピーして、B5に値を貼り付け。F9をクリック。
    B3をコピーして、B6に値を貼り付け。F9をクリック。

    このような感じでマクロの記録をしたのですがこれを100回繰り返すとソースも長くなってしまいます。

    もっとスマートにソースを書けないでしょうか?

    No.2の回答に寄せられた補足コメントです。 補足日時:2020/12/31 17:07

A 回答 (3件)

No2です。



>フィルコピーを試したのですが、セルは関数が入るだけでダメでした。
補足でご提示の各式は、そのままでは何度計算しても同じ結果になるはずのものばかりです。
もしも、計算の度にそのセルの値が変わるのなら、その式の参照先の値が変わっているはずで、ランダムの元となっている部分は他に存在すると推測されます。
ですので、仕組みが不明のままでは対応法を考えようにもしようがありません。

>できればVBAで完結させたいのですが無理でしょうか?
最初にお望みの通りの操作を行えばできますけれど、想像するところ、シート内に関数がたくさん詰め込まれていそうなので、再計算にも時間がかかることが予想されるため、全部を処理するのにそれなりの時間が(無駄に)かかる可能性があります。

まぁ、仕組みを小出しにされても、解明するまでに無駄な時間を要するばかりなのは見えていますので…

Sub Sample()
 For i = 4 To 100
  Cells(i, 2).Value = Cells(3, 2).Value
  ActiveSheet.Calculate
 Next i
End Sub
    • good
    • 0
この回答へのお礼

すいません。今、補足を書いてしまったところです。

試してみたのですが上手くできました。

大晦日に付き合ってくれて本当感謝です。

ありがとうございました。

お礼日時:2020/12/31 17:10

No1です。



>F9をクリックするとセルB3は、常に変わると言う仕組み。
>ランダムされた文書を入れるにはどうすればいいのでしょうか?
どんな仕組みかしりませんが、B3セルの仕組みをそのままマクロに入れればよいしよう。

仕組みがわかりませんけれど、想像するところ、関数式でどこかの表から参照してきていると仮定してよいのなら…
そうであるなら、わからないマクロなどを振り回す必要もないでしょう。
・数式をフィルコピー可能な形にして、一度だけB3:B100にフィルコピー
しておけば、後は、F9を一度押すだけで全体が切り替わるようになります。
この回答への補足あり
    • good
    • 0
この回答へのお礼

fujillinさん

回答ありがとうございます。

フィルコピーを試したのですが、セルは関数が入るだけでダメでした。

ちなみに今やっているのがランダム文章の作成です。

セルB3には・・・
=D3&E3&F3&G3&H3&I3&J3&K3&・・・省略・・・&CY3


セルD3には・・・
=@IF(ISERROR(@INDEX($CZ$3:$GU$101,MATCH(MIN(GV$3:GV$101),GV$3:GV$101,0),COLUMN(A2))), "",INDEX($CZ$3:$GU$101,MATCH(MIN(GV$3:GV$101),GV$3:GV$101,0),COLUMN(A2)))

セルD4には・・・
=@IF(ISERROR(@INDEX($CZ$3:$GU$101,MATCH(MIN(GW$3:GW$101),GW$3:GW$101,0),COLUMN(B2))), "",INDEX($CZ$3:$GU$101,MATCH(MIN(GW$3:GW$101),GW$3:GW$101,0),COLUMN(B2)))

~~~

セルCY3には・・・
=@IF(ISERROR(@INDEX($CZ$3:$GU$101,MATCH(MIN(KQ$3:KQ$101),KQ$3:KQ$101,0),COLUMN(CV2))), "",INDEX($CZ$3:$GU$101,MATCH(MIN(KQ$3:KQ$101),KQ$3:KQ$101,0),COLUMN(CV2)))

このような感じで関数が入っています。

CZ3~GU3以降に文章を入れていてF9をクリックするとセルB3にランダム文章が入力されると言う仕組みとなっています。

この場合では、セルB3に1つのランダム文章が入るようになります。

これをB4~B100ぐらいまで、一度にランダム文章を完成させたいのです。

できればVBAで完結させたいのですが無理でしょうか?

お礼日時:2020/12/31 16:05

こんにちは



>マクロの記録をするのが手間なので~
よほどお忙しいのか、よほどの無精者なのか・・・

他に妙なマクロが関係していないと仮定できるのなら、

Sub Sample()
 Cells(4, 2).Resize(97).Value = Cells(3, 2).Value
 ActiveSheet.Calculate
End Sub
    • good
    • 0
この回答へのお礼

fujillinさん

回答ありがとうございます。

言葉が足らずすいません。

実は、セルB3には、ランダムの文章が入っています。

F9をクリックするとセルB3は、常に変わると言う仕組み。

そこで、B4~B100までランダムの文章を入力したいのです。

早速、教えてもらったソースで試したのですが、残念ながら全て同じ文章がセルにコピーされてしまいました。

ランダムされた文書を入れるにはどうすればいいのでしょうか?

お礼日時:2020/12/31 15:12

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A