[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『カード作成』(km)
a b c d e f g 1 取引先 品名 素材 カラー 定価 個数 卸値
この様な配列で1500行並んでいます。
これを、sheet2に転記したいと考えています
2列毎コピーして 取引先 品名 素材 カラー 定価 個数 卸 値
この様にはできないでしょうか?最後の卸値はセル連結にしたいです
例えば、上記作業がワンセットとして,格納出来ればマクロの繰り返し
処理で1500回出来るのでは?もし出来るのであればその格納法を
教えていただけないでしょうか、自分でやってみて出来なければ
コードを載せて、また、教えていただきたいと思っています。
説明不足かも知れませんがお願いします。値札を作りたいのです
最終形態はどのセルにどの様に表示させるのでしょう? 元データのサンプルには行列番号が書いてありますが Sheet2の方は、書いてないので良く分かりません。
例えば、元データがSheet1に有る場合 Sheet2のA1セルに =IF(INDEX(Sheet1!A:A,ROW(A4)/4)="","",INDEX(Sheet1!A:A,ROW(A4)/4)) B1セルには、上の式で、B列を参照する物 =IF(INDEX(Sheet1!B:B,ROW(A4)/4)="","",INDEX(Sheet1!B:B,ROW(A4)/4)) A2セルには、上の式で、C列を参照する物 =IF(INDEX(Sheet1!C:C,ROW(A4)/4)="","",INDEX(Sheet1!C:C,ROW(A4)/4)) ・・・・と、A4セルまで参照先を変更した式を入力し A4:B4セルはセルの結合をします。
A1:B4セルを選択して、下にフィルドラッグすると 1行分が4行になって、繰り返して参照出来ると思います。
(HANA)
HANAさん、ありがとうございます、できました!
5列あれば=row(a5)/5に変更すればいいですね
はい、全て変更して回るのは面倒ですが その様にして頂ければ宜しいかと思います。
(HANA)
すみません!もう一度教えてください。 HANAさんに教わった形で挑戦しましたが1500行を修正しながらはとても時間が
笑われると思いますが やりたいことのコードを初心者ながら載せてみます
Sub rei()
Dim A As Variant A = Sheets("元帳").Range("b:c").Value ここで2列3行にしたいです Sheets("元帳").Range("d:e").Value Sheets("元帳").Range("F").Value
Sheets("値札").Range("a:b").Value = A ここでa列b列に各行毎転記
sheets("値札").Activate Rows("3").RowHeight = 50 ここも3行毎繰り返したく Columns("a").ColumnWidth = 20 Columns("b").ColumnWidth = 30 MsgBox Range("g2").RowHeight
1500行だと=x3で4500行になるため元帳が500行になったら値札c:dへ移行
1000行になったらe:fへ移動となる様にしたいのですが
調べたのですがさっぱりわかりません。
HANAさん、2日位でで仕上げたいので、せっかくのご教授申し訳ありません
この様な説明で理解していただけた良いのですが
元帳は、b2:f1500
値札はa1:b1からです よろしくお願いします
>1500行を修正しながら のイメージがよく分かりません。
>元帳が500行になったら値札c:dへ移行 >1000行になったらe:fへ移動 これは分かりました。
結局、1行が何行に成るのですか? そして、最初の2組(元の1行と、新しいシートの1組 を2セット) を例に挙げて、どのセルがどこへ配置されれば良いのか教えて下さい。
数式の場合は、最初の一組を作れば (最初のご説明の場合、A:B列用の式を 7個 C:D列用の式を7個 E:F列用の式を 7個の合計21個) 後はフィルドラッグで済むと思っているのですが。。。?
私のイメージは実際と何が違うのでしょう?
(HANA)
HANAさん、理解できず申し訳有りません。
a b c d e F g
1 取引先 品名 素材 カラー 定価 個数 卸値
2 aaa あああ ????? s 10 100 5
元帳 a2===> 値札 a1
元帳 a3===> 値札 a5
このよううになります 取引先 品名 a1 b2 素材 カラー c3 d4 定価 個数 e5 F6 卸 値 g7 a3 b3
コピーすると行数がずれてきます。どうしたらいいですか
>このよううになります 本当ですか?
値札の一行目は a1,b1・・・ではなく、a1,b2・・・ と成っているのに 五行目は、a3,b3・・・となりますか?
数式によっては、a1,b1が参照されている状態で A1:B4を選択して下にフィルドラッグしたら a3,b3が参照されることは有るかもしれませんが。。。
それとも、書いて居られるのはセル番地では無いのかな? それとか、元帳のセル番地の事じゃないとか。。。?
上手く行かない値札シートの A1,B1,A5,B5セルに入っている式を教えて下さい。
(HANA)
因みに。。。 =IF(INDEX(Sheet1!A:A,ROW(A4)/4)="","",INDEX(Sheet1!A:A,ROW(A4)/4)) この式では、Sheet1のA1セル(1行目)が表示されてしまうので INDEX関数の二番目の引数に +1 をして、2にするか、 ROW関数で8を返えさせて /4したときに 2に成るようにするか。。。 する必要が有りますが、その点は大丈夫ですか?
どこかの列で1,2,3,4行目に「=ROW(A4)/4」を入れて それらのセルを選択して下にフィルドラッグしてみて下さい。 1,1,1,1,2,2,2,2,3,3,3,3,・・・・と4つずつ縦に数字が並ぶと思います。 この数字がINDEX関数の 行番号 に指定されるので Sheet1の、1行目、2行目 のセルの値が返されることに成ります。
A:B列は、2行目から参照したいので 最初のブロックの数式は +1 =IF(INDEX(Sheet1!A:A,ROW(A4)/4+1)="","",INDEX(Sheet1!A:A,ROW(A4)/4+1))
C:D列は、126目から参照したいなら、最初のブロックの数式は +125 =IF(INDEX(Sheet1!A:A,ROW(A4)/4+125)="","",INDEX(Sheet1!A:A,ROW(A4)/4+125)) に成ると思います。
済みませんが、もう一度確認してみて頂ければと思います。
(HANA)
一応、500で折り返して隣の列に移動するマクロです。 '------ Sub km() Dim tbl As Variant, x As Variant Dim i As Long, xr As Long, xc As Long With Sheets("元帳") tbl = .Range("A1").Resize(.Range("A" & Rows.Count).End(xlUp).Row, 7).Value End With ReDim x(1 To 500, 1 To Columns.Count) For i = 2 To UBound(tbl, 1) If xr = 500 Then xr = 0 xc = xc + 2 End If If tbl(i, 1) = "" Then Exit For End If x(xr + 1, xc + 1) = tbl(i, 1): x(xr + 1, xc + 2) = tbl(i, 2) x(xr + 2, xc + 1) = tbl(i, 3): x(xr + 2, xc + 2) = tbl(i, 4) x(xr + 3, xc + 1) = tbl(i, 5): x(xr + 3, xc + 2) = tbl(i, 6) x(xr + 4, xc + 1) = tbl(i, 7) xr = xr + 4 Next With Sheets("値札") .Cells.ClearContents .Range("A1").Resize(500, xc + 2).Value = x End With End Sub '------
列幅・行幅・セルの結合 等の書式設定は 毎回実行の必要は無いと思うのでマクロに入れていませんが。。。 毎回新しいシートに作成する事に成りますか?
(HANA)
HANAさん、ありがとうございます。今度こそ思った通りに出来ました
セル番地ミスを気が付いて正しく導いてくれたことに感謝いたします。
今後とも宜しくお願いします。(KM)
出来ましたか、良かったです。 ROW(A4)/4 の部分が、最初から数式内に入っていたので わかりにくかったかもしれません。。。
今回は、どうせ参照先(Sheet1!A:A の部分)を それぞれ変更する必要が有ったので、全て ROW(A4)/4 にしましたが =INT(ROW(A4)/4) こんな感じで、切り捨てる事にすると A1セルに入れてこれをフィルドラッグするだけで 1,1,1,1,2,2,2,2,3,3,3,3,・・・・と4つずつ縦に数字を得ることが出来ます。
又何かの折に使用を試みて頂ければと思います。
(HANA)
3行飛ばしで行幅を変えるにはどうすればいいですか 自動マクロでやってみましたが
行が多すぎて困っています
Sub Macro3()
Range("3:3,6:6,9:9,12:12,15:15,18:18,21:21,24:24,27:27,30:30,33:33,36:36,39:39" _ ).Select Range("A39").Activate Selection.RowHeight = 40 Range("A3").Select End Sub
600行まで変更したいのですが、またインプットボックスで好きに幅を変更できるように
出来ればお願いします (km)
何度もすみません。何とか動いていますが キャンセルするとエラーになります
0を打ち込めば回避できますが キャンセルボタンで終了できませんでしょうか
Sub haba() Dim i As Long
i = InputBox("幅を入力してください")
Sheets("Sheet1").Activate Range("3:3,6:6").RowHeight = i
Range("3:6").Select Selection.Copy Rows("7:300").Select ActiveSheet.Paste Application.CutCopyMode = False Range("a1").Select
End Sub
宜しくお願いします (km)
このマクロは、Sheet1以外がアクティブな時に実行して Sheet1をアクティブにして終了するのですか?
(HANA)
HANAさん、すみません。とにかく動け と思い
こうかな?で動かしました、アクティブとかまったく考えていません
0を入れてOKなら終了してくれます。どうしたらいいですか?
>どうしたらいいですか? そうですねぇ。。。他の人がどうしているのか 見てみても良いと思いますが。。。
それから、デバッグ出来るようになる。
それにしても、そのコードは私が実行すると 10行目までしか行の高さは変わりませんが kmさんの環境では300行目まで変わりますか?
>アクティブとかまったく考えていません それで、考えてみるとどうなのでしょう?
Sheet1を選択して終われば良いのなら こんな感じで?
Sub haba2() Dim i As String i = InputBox("幅を入力してください") If i <> "" Then Sheets("Sheet1").Activate Range("3:3").RowHeight = i
Range("1:3").Copy Rows("4:300").PasteSpecial Application.CutCopyMode = False Range("A1").Select End If End Sub
InputBoxのヘルプをみると「文字列型 (String) の値を返します。」と書いてありますので その値を入れる変数も、Stringが良いと思います。
そして、キャンセルした時には「""」が入るので iの値を確認してから、処理を分岐します。
(HANA)
hanaさん、コピペしてやってみましたが、300行までデーターが消えました?
何が悪いのでしょうか
HANAさんのコードでしたら
>Rows("4:300").PasteSpecial を Rows("4:300").PasteSpecial xlPasteFormats ~~~~~~~~~~~~~~~ と少し付け足してみてください (momo)
(momo)さん、ありがとうございます。できました (km)
momoさん、フォロー有り難う御座います。
にしても・・・ご提示の「haba」のコードも データは消えてましたよね。。。?
まぁ、あのコードでは 3:6行目が7:10行目に貼り付くだけ だったのではないかと思いますが。。。??
(HANA)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.