Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


8654 / 13644 ツリー ←次へ | 前へ→

【32025】マクロを使用したシート間の貼り付け操作について oyster 05/12/4(日) 21:56 質問[未読]
【32026】Re:マクロを使用したシート間の貼り付け操... oyster 05/12/4(日) 21:59 質問[未読]
【32027】Re:マクロを使用したシート間の貼り付け操... やっちん 05/12/4(日) 22:52 発言[未読]
【32028】Re:マクロを使用したシート間の貼り付け操... oyster 05/12/4(日) 23:19 質問[未読]
【32032】Re:マクロを使用したシート間の貼り付け操... やっちん 05/12/4(日) 23:40 回答[未読]
【32034】Re:マクロを使用したシート間の貼り付け操... やっちん 05/12/4(日) 23:55 発言[未読]
【32035】Re:マクロを使用したシート間の貼り付け操... oyster 05/12/5(月) 3:17 お礼[未読]

【32025】マクロを使用したシート間の貼り付け操作...
質問  oyster  - 05/12/4(日) 21:56 -

引用なし
パスワード
   皆様のお力を拝借できればと思い、書込をさせていただきました。

メインシートに「得点A」「得点B」のタイトル行があります。得点Aに関するデータは、下記の通り、01データ(不正解、正解)として一行おきに並んでいます。括弧内の別データは得点としては変換されません。


                      得点A  得点B
被験者1 0 1 1 1 0 0 1 1
(被験者1の上記得点に関わる別のデータ)
被験者2 1 1 1 0 1 1 0 1
(被験者2の上記得点に関わる別のデータ)
被験者3 0 0 1 1 0 0 1 0
(被験者3の上記得点に関わる別のデータ)



というように続きます。得点Aは、Σ計算をすれば、一行おきに計算できます。

問題は「得点B」です。同一ブック内の別シートで計算されたデータを、得点Aの横に貼り付けたいと考えています。

ただし別シートで計算された値は、一行おきではなく、続きデータとして出力されています。

     得点B(関数式で計算された値です)
被験者1  3
被験者2  1
被験者3  7





と言った具合です。このシートからメインのシートへ、一行おきに得点Bの値を貼り付けるマクロを方法(プログラム?)を教えて頂けないでしょうか。

どうぞよろしくお願いします。

【32026】Re:マクロを使用したシート間の貼り付け...
質問  oyster  - 05/12/4(日) 21:59 -

引用なし
パスワード
   追加です。

メインシートの入力形式を変更すれば、さほど難しくないような気もします。しかし、どうしても今回の形式の解決方法を知りたいと思いまして、投稿させて頂きました。

よろしくお願いします。

【32027】Re:マクロを使用したシート間の貼り付け...
発言  やっちん  - 05/12/4(日) 22:52 -

引用なし
パスワード
   ▼oyster さん:
こんばんは。
得点Bの行は、
Rounddown(((処理を行いたいデータの行)−(メインシートのデータの先頭行))/2,0)+得点Bの先頭行
で求められます。

【32028】Re:マクロを使用したシート間の貼り付け...
質問  oyster  - 05/12/4(日) 23:19 -

引用なし
パスワード
   やっちん さん

早速回答頂きありがとうございます。

>Rounddown(((処理を行いたいデータの行)−(メインシートのデータの先頭行))/2,0)+得点Bの先頭行で求められます。

もう少しお付き合い頂けませんでしょうか。

メインシートの「L2」が一人目の得点Bを返すセル
サブシートの「K2」が一人目の得点B(元データ)が返されたセル

だとしますと、具体的にどういう記述になるのでしょうか?この関数は初めて目にしましたので、まったくイメージがわきません....。

For k=... TO...で複数のものを処理したいと考えています。

基本的な質問で恐縮ですが、お願いできますでしょうか。

失礼します。

【32032】Re:マクロを使用したシート間の貼り付け...
回答  やっちん  - 05/12/4(日) 23:40 -

引用なし
パスワード
   ▼oyster さん:
こんばんは。
件数を100件、サブのシートの名前を「サブシート」で作成してみました。
rounddownはシート関数で切り捨てです。

Sub test()
  Const M_StartRow = 2
  Const S_StartRow = 2
  Dim k As Long
  Dim w_M_Row As Long
  Dim w_S_Row As Long
  Dim lngKensuu As Long
  
  lngKensuu = 100
  For k = 0 To lngKensuu - 1
'処理中の行
    w_M_Row = M_StartRow + k * 2
'得点Bの行
    w_S_Row = Application.RoundDown((w_M_Row - M_StartRow) / 2, 0) + S_StartRow
    Cells(w_M_Row, "L").Value = Sheets("サブシート").Cells(w_S_Row, "K").Value
  Next k
End Sub

【32034】Re:マクロを使用したシート間の貼り付け...
発言  やっちん  - 05/12/4(日) 23:55 -

引用なし
パスワード
   >'得点Bの行
>    w_S_Row = Application.RoundDown((w_M_Row - M_StartRow) / 2, 0) + S_StartRow

最適化すれば
w_S_Row = k + S_StartRow
ですね。

【32035】Re:マクロを使用したシート間の貼り付け...
お礼  oyster  - 05/12/5(月) 3:17 -

引用なし
パスワード
   やっちん さん

本当に丁寧な回答をありがとうございました。連絡が遅くなましたが、途中外出をしていました。申し訳ありませんでした。

早速行いました。完璧です!

簡単ではありますが、感謝の気持ちでいっぱいです。

失礼します。

8654 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free