• 締切済み

エクセルの貼り付けについて

添付画像の様にB列に入力してあるデータを 8行ずつずらしながら、 B列のデータがどこに入っているかを 分かるような表をFからG列で作成しています。 8×3行が終わったら2行下の所からまた8×3行 と入れていきたいのですが、 例えば14行目のE・F・Gの数式を編集しないといけなく、 実際は8×12で運用しているので、 手間がかかります。 簡単に貼り付けるだけで 新しい入力欄ができるようにはできないでしょうか? よろしくお願いします。

みんなの回答

  • SI299792
  • ベストアンサー率47% (772/1616)
回答No.5

>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)
回答No.4

既に 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)
回答No.3

お望みは、関数を使ってだろうし、その回答も出ています。 個人的興味で、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)
回答No.2

前式間違い E5: =IF(MOD(ROW(),9)=4,"",OFFSET($B5,QUOTIENT(ROW()-5,9)*15+COLUMN()*8-40,0))

  • SI299792
  • ベストアンサー率47% (772/1616)
回答No.1

E14 にはB29 のセルの値が入ればいいのですか。 E5: =IF(MOD(ROW(),9)=4,"",OFFSET($B5,QUOTIENT(ROW()-5,9)*16+COLUMN()*8-40,0)) 右下へコピペ。

関連するQ&A

専門家に質問してみよう