[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『関数をデータのある最終行までコピーできるマクロ』(すいな)
こんにちは。
お仕事でマクロを使いたいなと考えている、超初心者です。
毎月、行数が変動するデータを使用する予定です。
A列 B列 C列 ・・・・
1 番号 名前
2 12340 佐藤
3 12345 田中
4 12332 鈴木
5 12361 山田
6 12399 古賀
7 12384 西村
:
:
やりたいことは
1、A2のセルに、B列の「番号」の下2桁を抽出する(RIGTH関数使用予定)。
2、A2の式を、B列にデータが入力されている最終行までコピーする。
3、表全体を選んで、昇順で並び変える。
最優先:A列の値
次の優先:B列の値
自分で、「マクロの記録」を使ってやってみたところ、
2、のオートフィルで関数をコピーするところが、
データの行数の変動に対応できていませんでした。
お時間ある方、よろしければ
3、までのマクロの組み方を、教えていただけませんでしょうか?
自分だけの仕事ではないのですが、
エクセルが使えない職員でも使えるように、
ボタン(フォームコントロール)を作って
ポチポチっと簡単に作業ができたらいいなと思っています。
よろしくお願い致します。
< 使用 Excel:Excel2007、使用 OS:unknown >
(マナ) 2016/11/10(木) 23:30
Sub test()
Range("A2").Formula = "=right(B2,2)"
End Sub
Sub test2()
Range("A2:A7").Formula = "=right(B2,2)"
End Sub
Sub test3() Dim r As Long
r = Range("B" & Rows.Count).End(xlUp).Row Range("A2:A" & r).Formula = "=right(B2,2)"
End Sub
(マナ) 2016/11/10(木) 23:40
<<並び替え作業_作業手順書>>
>1、A2のセルに、B列の「番号」の下2桁を抽出する(RIGTH関数使用予定)。
A2セルに、「=right(B2,2)」と入力
>2、A2の式を、B列にデータが入力されている最終行までコピーする。
A2セルを選択し、右下にあるフィルハンドルをダブルクリック
>3、表全体を選んで、昇順で並び変える。
> 最優先:A列の値
> 次の優先:B列の値
B列を選択→データタブの並び替えとフィルターの「AZ↓」ボタンをクリック
A列を選択→「AZ↓」ボタンをクリック
<<手順書終わり>>
こういうメモ書いて渡しとけばできませんかね?
マクロでやるなら、この手順書をエクセル君の解るVBAという言語に翻訳するだけです。
この作業を「マクロの記録」してみると、
操作が、VBAに翻訳されて記録されます。
それを参考に、手順書を作ってやるだけです。
マクロ化したければ、まずはそこから始めてみてください。
そのうえで解らなかったり上手くいかなかったりしたことを、
聞いたらいいと思います。
「フィルハンドル」も解らなければ検索してください、
画像があった方が解りやすいので。。。。^^
(まっつわん) 2016/11/11(金) 08:13
数式をある領域に、その参照を相対的に変化させながら埋め込む方法は マナさんのtest3のように、領域に対して、その領域の最初のセルに対する式を入れる、 あるいは、まっつわんさんのレスのように、最初のセルに数式を入れて、あとはオートフィル。 こういった方法がありますが、課題は、その領域をどのように求めるかですね。
まっつわんさんの方法で実行したものをマクロ記録しますと、コード内では A2:A● と、 その時の最終行の●が固定で生成されてしまいますので、ここを動的に取得したもので 置き換えることが必要ですね。
その最終行番号の求め方はマナさんのtest3にも書かれていますが、もう1つ、提示のレイアウトの場合
・A1 を選択。 ・Ctrl/Shift/*
これで、A1:A● までが選択されます。これをマクロ記録すると、コード内では A1:A● という固定領域ではなく
Range("A1").CurrentRegion というものが登場します。Range("A1").CurrentRegion というのは そのセルが属する連続した表の矩形領域なんですが これを使って Range("A1").CurrentRegion.Rows.Count でも、●の値が取得できます。
ご参考まで。
(β) 2016/11/11(金) 09:03
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.