- 締切済み
エクセルの貼り付けについて
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- SI299792
- ベストアンサー率47% (772/1616)
>E・F・G の数式を編集しないといけなく、 であれば、VBA の方がいいかもしれません。 Option Explicit ' Sub Macro1() Dim RInp As Long Dim ROut As Long ' For RInp = 0 To Cells(Rows.Count, "B").End(xlUp).Row - 5 Step 8 ROut = (RInp \ 24) * 9 + 5 Cells(ROut, RInp \ 8 Mod 3 + 5).Resize(8) = _ Cells(RInp + 5, "B").Resize(8).Value Next RInp End Sub
- msMike
- ベストアンサー率20% (364/1804)
既に SI299792さんから素晴らしい回答が寄せられて居ますが、私のはお恥かしい限りです。(*^_^*) 此の場を拝借して私の備忘録の一つとして下記に書いて措きます。 下記の各セルに夫々の右側に示した式を入力して、夫々右に3列下に7行オートフィルしたら如何かと。 E5: =OFFSET($B$5,MOD(ROW(A1)-1,8)+(COLUMN(A1)-1)*8,) E14: =OFFSET($B$29,MOD(ROW(A1)-1,8)+(COLUMN(A1)-1)*8,) E23: =OFFSET($B$53,MOD(ROW(A1)-1,8)+(COLUMN(A1)-1)*8,) E32: =OFFSET($B$‥,MOD(ROW(A1)-1,8)+(COLUMN(A1)-1)*8,) E41: ……
- imogasi
- ベストアンサー率27% (4737/17069)
お望みは、関数を使ってだろうし、その回答も出ています。 個人的興味で、VBAで、繰り返し法でやってみた。 標準モジュールに Sub test01() lr = Range("B100000").End(xlUp).Row 'MsgBox lr 'スタートポジション i = 4 '原データのスタート行 '--- ltx = 5 '目的表部分データのカタマリのスタート行 lty = 5 '目的表部分データのカタマリのスタート行 '-- x = 0 '目的表部分データのスタート行 第1 行スタート y = 0 '目的表部分データのスタート列 第5列スタート '--繰り返し部分 S1: '===元データ i = i + 1 '原データは、次はいつも次行に行く。B列のデータ Cells(ltx + x, lty + y) = Cells(i, 2) '元データB列=2 よりとる '====目的表部分の内部で x = x + 1 '目的表部分の直下の行を指す 取り敢えず列は動かさず If x > 7 Then '8行超えたら x = 0 '目的表の第1行へ y = y + 1 '目的表の列を右列へ+1 Else End If '--- If y > 2 Then 'E列+3列=G列より右列をポイントしたら ltx = ltx + 9 '8行下のセルから目的表セットする ity = 5 'ltyはE列からでうごかない. '--- x = 0 'G列を越えたら目的表の中のポイントをE列に戻す y = 0 Else End If '--元データ最下行越え If i > lr + 1 Then Exit Sub '最終行までで終わり GoTo S1 End Sub 結果 一部 B列=も読データ E,F,Gが、小生が目的表と言っている部分 FA00004 FA00004 FA00012 FA00020 FA00005 FA00005 FA00013 FA00021 FA00006 FA00006 FA00014 FA00022 FA00007 FA00007 FA00015 FA00023 FA00008 FA00008 FA00016 FA00024 FA00009 FA00009 FA00017 FA00025 FA00010 FA00010 FA00018 FA00026 FA00011 FA00011 FA00019 FA00027 FA00012 FA00013 FA00028 FA00036 FA00044 結構クダクダして、褒めたものではないな。 クラスなどを使うとかして、スッキリしたいと思った。
- SI299792
- ベストアンサー率47% (772/1616)
前式間違い E5: =IF(MOD(ROW(),9)=4,"",OFFSET($B5,QUOTIENT(ROW()-5,9)*15+COLUMN()*8-40,0))
- SI299792
- ベストアンサー率47% (772/1616)
E14 にはB29 のセルの値が入ればいいのですか。 E5: =IF(MOD(ROW(),9)=4,"",OFFSET($B5,QUOTIENT(ROW()-5,9)*16+COLUMN()*8-40,0)) 右下へコピペ。