dポイントプレゼントキャンペーン実施中!

Excel VBAで、
以下の範囲で5つの項目をうまく操作したいです。
1行目が項目名です。
A列「連番」:2行目からカウント
E列「年月」:「2021年04月」が入っています
F列「区分1」:01~29(29パターンありますが将来増減の可能性あり)
G列「区分2」:A~J(10パターン)
H列「比率」:ある率が入ってます(値は本件と無関係です)

これが以下の様に全組み合わせに対する率が列挙されています。

A列,E列,F列,G列,H列(B~D列は別の情報が入っていて無視してOK)
1,2021年04月,01,A,任意の率
2,2021年04月,01,B,任意の率


9,2021年04月,01,I,任意の率
10,2021年04月,01,J,任意の率
11,2021年04月,02,A,任意の率
12,2021年04月,02,B,任意の率


281,2022年04月,29,A,任意の率
282,2022年04月,29,B,任意の率


290,2022年04月,29,J,任意の率

つまり、AからJまで進んだら、01が02になり、、、の繰り返し、
29,Jまであるので、現在290行あります。
もし区分1が30まで増えたら全行数が300行になるという事になります。

前置きが長くなりましたが、上記は自動で生成されるようになっています。
----------
今回の相談は、その下に自動で追加したいのです。

E列「年月」、F列「区分1」の全パターンに、
G列には「全体」という固定値、
H列には「1」という数値を固定で入れて行追加したいのです。

具体的にはこうなると思います
291,2021年04月,01,全体,1
292,2021年04月,02,全体,1


319,2021年04月,29,全体,1

つまり今回の場合は290行目の下に29行追加されるのですが、
問題点は、
・区分1の増減により全体の行数が変わる
・A列が連番になっている必要がある

長くなってしまいましたが、問題点解決策のアドバイスをお願いいたします。

質問者からの補足コメント

  • へこむわー

    2022年というのは誤入力です。失礼いたしました。
    1か月分だけです。
    29行だけ追加されることになりますがその特定方法が分からず。。。

    No.2の回答に寄せられた補足コメントです。 補足日時:2021/03/19 10:22

A 回答 (33件中31~33件)

>・区分1の増減により全体の行数が変わる


>・A列が連番になっている必要がある
要は、最終行とその最終行に書かれている連番の値が判れば良いわけですね。

以下のマクロを実行してください。
最終行と最終行に書かれている連番が取得できます。

Option Explicit

Public Sub 最終行取得()
Dim maxrow As Long
Dim renban As Variant
maxrow = Cells(Rows.Count, "A").End(xlUp).row 'A列最終行
renban = Cells(maxrow, "A").Value
MsgBox ("最終行=" & maxrow)
MsgBox ("連番=" & renban)
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございます。早速試してみました。
A列には関数が入っていて、今回の場合291番の場所以降は””表示の処理が入っていました。
なので上記ソースを実行すると、一見、空セルでも関数の入っている一番下の行位置が表示されてしまいました。
見た目に数値が入っているかを検知できないでしょうか。

お礼日時:2021/03/19 10:25

No.1のお礼について。



>事前処理後の表に対してあらためて処理したいのです。

ここは質問文でわかりますけど、取得したい内容は既に事前処理にて得られるものです。
仮に業者が作成した訳とかその部署で作成したって事であれば、相談するのが先かなと。

>なので1か月分だけの表に対して、「全体」行を追加したいのです。

私は質問文の 281 の前後で『年』が違うのは何故なのか?と疑問に感じたのですけど?
その辺で他の回答者も困惑されているのかもですよ。
仮に間違いで年が同じってっ事であり、必ず10パターンが1組で組数が変わるだけならA列の最終番号を10で割れば『何組』なのかは求められそうですけど。
他の年月のデータでその辺の確認はされて来ませんでしたか?

でもどれだけの組数の変化があるのかわかりませんが、100行以上作成する訳ではないのなら、2行打ち込んでフィルコピーでも出来るレベルな事かと。
或いは500・1000とかの月もあるのでしょうか?
又はフィルコピーでは他の列で影響が出てしまう?
この回答への補足あり
    • good
    • 0

問題点として挙げている部分は現在自動生成が完成しているコード内容によって決まるのではなくて?


A列の値は1つ上のセル値に+1で決まるでしょうけど、『区分1』の増減対応ってそもそも区分1の終了値をどのようにして決めているか?によりませんかね。

ところで『年月』の年がいつ翌年になるのか、月はずっと同じなのかが気になります。
    • good
    • 0
この回答へのお礼

自動生成している処理は、事前に別の部署で行ってから、
こちらに回ってきます。

なので相談内容は、事前処理後の表に対してあらためて処理したいのです。

>『年月』の年がいつ翌年になるのか、月はずっと同じなのかが気になります。

月ごとに事前処理後のファイルが回ってきますので、
4月で出来る方法を作っておけば、5月以降も同様の事をすればよいと考えてます。
なので1か月分だけの表に対して、「全体」行を追加したいのです。

お礼日時:2021/03/18 20:46
←前の回答 1  2  3  4

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!