プロが教える店舗&オフィスのセキュリティ対策術

初めまして。
Excel初心者です。
色々と調べてみたのですが、上手くいかずご相談させていただきたいと思います。

縦列の特定の文字を検索し、その手前に空白が無くなった場合に行を追加したいです。
    A 列   B列   C列   D列   E列   F列 ・・・
1行目 名前1  概要1  金額1  名前2  概要2  金額2・・・
2行目 【ここに何か入力されたら行を追加したいです】
3行目 <項目1>     合計1            合計2・・・
4行目 名前3  概要3  金額3  名前4  概要4  金額4・・・
5行目 【ここに何か入力されたら行を追加したいです】
6行目 <項目2>     合計3            合計4・・・

例として、上記のように項目の異なる計算を1月、2月と月別でシートごとに分けて作っています。
月によって項目数が変わり、5件記録を入力する時もありますし、50件の時もあります。

予め空白の行を作っておいておくことはできますが、そうなると表が必要以上に縦長になってしまい見づらくなってしまうので、できる限りコンパクトにしたいと考えています。
IF文でRenge.Findなど使ってみましたが、書き方が悪いのかうまく作動しません。

分かりにくい質問になってしまいましたが、知恵をお貸しいただけましたら幸いでございます。
よろしくお願い致します。

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

  • つらい・・・

    VBAを組み込むことを前提で考えています。
    正しい処理の書き方などが正確に分かっていない状態です。
    言葉が抜けてしまって申し訳ありません。

      補足日時:2022/07/11 13:32
  • へこむわー

    タイトルを間違えていました。
    列ではなく『行』の追加をしたいと考えています。

      補足日時:2022/07/11 13:55

A 回答 (3件)

こんにちは



>その手前に空白が無くなった場合に行を追加したいです。
行の追加(挿入)はVBAを使用しないとできません。
そういう意味でのご質問でしょうか?

>【ここに何か入力されたら行を追加したいです】
なんらかの区切りの単位があって、その単位で空白行が無くなったら、空白行を自動挿入したいということかと推測しますが、「区切りの単位」がよくわかりませんね。
(質問者様には分かっていらっしゃると思いますので、問題ありませんけれど)

考え方として、
・合計欄等、関数を利用して集計等している部分があると思いますが、「行の挿入」を行っても計算が正しく行われるような関数式にして設定されていることが前提条件になります。

その上で、シートのChangeイベントで、
・変更のあったセルを取得し、そのセルが属する区切り単位を把握する。
・区切り単位内の空白行の有無をチェック
・空白行が無ければ、空白行を挿入する
 (空白行があれば、なにもしない)
といった処理を記述すれば実現できるものと想像します。

※ 上記だけだと、誤って入力して(空白行が追加され)、その後削除した場合には、空白行が2行になってしまいますが、それは許容されるものと解釈しました。
    • good
    • 1
この回答へのお礼

・記述漏れてしまい申し訳ありません。
VBAを使用する前提で質問していました・・・。

・区切りの単位は今のところ何も考えていませんでした。
文字列でも数字でも一番の目標として空白の行を自動追加したい。という状態です。

・考え方として行の挿入をしても計算が狂わないように設定しなくてはならないこと、把握しました。
処理の流れも大方理解はしていたのですが、VBAを触ることが殆ど初めてなので正しい書き方などが完全に理解できていない状態です。

・空白行が2行になってしまうことは許容しています。

言葉足らずで分かりづらい投稿に細かくご回答いただき、ありがとうございます!

お礼日時:2022/07/11 13:30

こんにちは


すでに回答されている1様の回答に同感です

ご質問の表組の場合、合計1など合計の文字列が必ずあるのであれば
合計をキーワード(Findではなく)に挿入するのはいかがでしょう

If InStr(Target.Offset(1, 2), "合計") > 0 Then
Target.Offset(1).EntireRow.Insert Shift:=xlDown
End If

C3に合計1の文字列でなく(多分こっちかな)
=SUM(C2:INDIRECT(ADDRESS(ROW()-1,COLUMN())))
みたいな関数が入っているのなら・・・

If InStr(Target.Offset(1, 2).Formula, "SUM") > 0 Then
のように数式文字列で位置を確認するなどかな・・

>VBAを組み込むことを前提で考えています。
現状の(上手くいかない)コードを示された方が良かったかな
    • good
    • 1
この回答へのお礼

ご回答ありがとうござます!
InStrで数式文字列も指定できるとは知りませんでした。

確かに、コードを明記すればより回答もし易いのかなと感じます。
初めての質問・相談の投稿で至らぬ点が多かったと存じます。
申し訳ありませんでした。

お礼日時:2022/07/12 09:12

本文中は「行を追加したい」のオンパレードだけど、タイトルは「列を自動で追加したい」とは、コレ如何に?

    • good
    • 1
この回答へのお礼

すみません。タイトルを間違えていたようです。
『行』を追加したいです。

お礼日時:2022/07/11 13:54

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング