お世話になります。
先程、「色付きのセルをカウントする方法について」という投稿させて頂いたのですが、それに付随する別のご質問をさせて頂ければと存じます。お忙しいところ、誠に恐縮ではございますが、お知恵をお貸し頂ければ、有り難いです。よろしくお願い致します。
添付資料をご覧ください。上の表から、VBAを使って自動的に、下の表を作成したいと考えております。現在、この作業は手作業で行っております。上の表から、条件に従って、下表に移動させます(※画面上、下の表になっていますが、実際は別シートです)。上の表の「1行目(101、102…)」のデータは必要なく、文字の色、特定の文字列(①から③)、曜日、といった条件の元、「左側に詰め」ながら、手作業でコピーペーストを繰り返すという作業です。
この作業を、なんとかVBAを使って実現できないものかと思っております。実際には、データの量も多く、また、上の表に修正が加えられると、下の表ももちろん変更が必要で、上の表の修正点のみ、下の表に反映をさせれば良いのですが、どうしても手作業で行うと、ミスも多く困っている次第です。
お忙しいところ、誠に恐縮ではございますが
お知恵をお貸しいただけないでしょうか。
ご教授を頂けると幸甚です。
何卒、よろしくお願い申し上げます。
No.20ベストアンサー
- 回答日時:
ありがとうございます。無事、動きました。
本当にありがとうございました。
何とお礼を申し上げて良いか、本当に分かりません。
感謝、感謝、感謝しかありません。心から、心から感謝申し上げます。
列数の増減が予想されますので、プログラム上で、列の設定を変更しても、きちんと動いてくれましたので、当分の間は問題は無いと思います。本当にありがとうございました。
将来的には、さらに細かい修正が入るかもしれませんが、その時までには、少しでもVBAのプログラムが理解できるように努力しようと思います(とりあえず、入門書を購入致しました)。
この度は、専門的な知識・技術をお貸し頂き、また、本当にお忙しい中、膨大な時間を私に割いて頂いたことを、深く深く感謝申し上げます。本当にありがとうございました。
今後とも、何卒、よろしくお願い申し上げます。
No.21
- 回答日時:
無事動いて何よりです。
余裕があれば、
色の追加、学年の追加もやってみてください。
colArr = Array(12611584, 255, 0) '集計先の列の並びは青,赤,黒の順
banArr = Array("1年", "2年", "3・4年") '集計先の列の並びは1年, 2年, 3・4年の順
に追加するだけで、他の変更は不要です。(Sheet2,Sheet3のレイアウトは変わりますが)
ほかにも、質問があれば、受け付けますので、当分締め切らないでこのままにしておいてください。
お世話になっております。
時間的に余裕があれば、色・学年の追加も行ってみます。
ありがとうございます。
また、温かいご配慮のほど、感謝申し上げます。
しばらく、締め切らないでそままにさせて頂きたいと存じます。
ありがとうございます。
何卒、よろしくお願い申し上げます。
No.18
- 回答日時:
>Sheet2:
https://gyazo.com/fd03e4bf5e3c1156bd7aef918f6e62e9>→ 時限が消えてしまっています。金曜日の2限以降は残っています。
>→ メニューが時限のところに入力されています。その分、一列ごと、ずれております。
>Sheet3:https://gyazo.com/dba912d1c34a1d3276ccb2379295d404
>→ こちらもよく似た状況だと思われます。
失礼しました。Sheet2,Sheet3の不具合、ともに修正しました。
下記にアップしました。
https://ideone.com/jjr2He
お忙しいところ、本当に申し訳ありません。
ありがとうございます。
Sheet1:https://gyazo.com/d35c025e5c184d3181d5a943e1ba1b17
Sheet2:https://gyazo.com/e82d11cfa31dae812c8314b64df250ae
Sheet3:https://gyazo.com/ea9b9e919f2a51ccc97f4ae5c085555b
処理が最後の行まで行われていないような気がしたので、Sheet1のすべての行を埋めて、プログラムを実行した結果です。
やはり、最後の行まで処理が行われていないような気がします。
お忙しいところ、恐縮ではございますが
ご確認の程、よろしくお願い致します。
何卒、よろしくお願い申し上げます。
No.17
- 回答日時:
追伸
1年・2年を2年として扱う場合、
現状では、
banArr = Array("1年", "2年", "3・4年")
banAltArr = Array("", "", "3年|4年")
定義の為、最初に"1年"で判定するので、"1年・2年"は1年にマッチしてしまい、1年として扱われます。
これを2年として扱いたい場合は、以下のような工夫が必要になります。
①banArrを()つけて定義する。
banArr = Array("(1年)", "(2年)", "3・4年")・・・・3・4年は()を付けてもつけなくてもどちらでも良い。
②banAltArrの2年の位置に1年2年を追加します。
banAltArr = Array("", "(1年・2年)", "3年|4年")
のようにします。
上記で、1年・2年を2年として扱されます。
()を含めて比較すると、(1年・2年)は、どちらにもマッチしないので、代替学年側の検索が行われます。
これから出かけます。戻りは夕方になります。
No.16
- 回答日時:
修正版です。
下記にアップしました。https://ideone.com/yENzSs
環境をもとに戻して試験してください。
Sheet2のイメージ:https://gyazo.com/951b43feb5b25a7067428c4fe0be9059
Sheet3のイメージ:https://gyazo.com/51cf8a2d7f518b51e2d8b08f52f50175
この状態で試験可能です。
お忙しいところ、ご修正頂き、ありがとうございました。
感謝申し上げます。
申し訳ございませんが、以下、ご確認頂けると幸いです。
Sheet2:https://gyazo.com/fd03e4bf5e3c1156bd7aef918f6e62e9
→ 時限が消えてしまっています。金曜日の2限以降は残っています。
→ メニューが時限のところに入力されています。その分、一列ごと、ずれております。
Sheet3:https://gyazo.com/dba912d1c34a1d3276ccb2379295d404
→ こちらもよく似た状況だと思われます。
お忙しいところ、恐縮ではございますが、ご確認の程、よろしくお願い致します。
何卒、よろしくお願い申し上げます。
No.14
- 回答日時:
>上記の環境で、頂いたプログラムを実行すると、下記のエラーが出ました。
>エラー:https://gyazo.com/1952be2d5a7190c72d5759d23a6f69b2
当初、あなたから提示された集計先のシートにはB列の時限がありませんでしたが、今回それが、追加されています。
これから、マクロをそれにあわせて修正しますが、それまでのあいだ、
Sheet2,Sheet3のB列を暫定的に削除して試験していただけますでしょうか。(後で戻すのでSheet2,Sheet3のコピーはとっておいてください)
No.13
- 回答日時:
1.Sheet1の検査対象となる列について
Private Sub setup_col_ban()の
columnArr = Array("C", "E", "G", "I", "L", "O", "U")
で定義しています。
もし、C列をD列に変えたいなら
columnArr = Array("D", "E", "G", "I", "L", "O", "U")
もし、AB列を追加したいなら
columnArr = Array("C", "E", "G", "I", "L", "O", "U","AB")
のようにしてください。
2.学年の判定について
banArr = Array("1年", "2年", "3・4年")
banAltArr = Array("", "", "3年|4年")
以下の順番で検査します。
①検査対象のセルの文字が1年を含んでいるか判定します。(含んでいれば1年に決定)
②含んでいなければ、同じ並びのbanAltArrの内容をみます。この場合、空白なので次の学年に移ります。
③検査対象のセルの文字が2年を含んでいるか判定します。(含んでいれば2年に決定)
④含んでいなければ、同じ並びのbanAltArrの内容をみます。この場合、空白なので次の学年に移ります。
⑤検査対象のセルの文字が3・4年を含んでいるか判定します。(含んでいれば3・4年に決定)
⑥含んでいなければ、同じ並びのbanAltArrの内容をみます。この場合、3年|4年なので⑦以降の処理に移ります。
⑦まず、検査対象のセルの文字が3年を含んでいるか判定します。(含んでいれば3・4年として決定)
⑧含んでいなければ、検査対象のセルの文字が4年を含んでいるか判定します。(含んでいれば3・4年として決定)
⑨含んでいなければ、結局どれにもマッチしないのでエラーメッセージを表示して終わり。
3.代替学年の追加について
banAltArr = Array("", "", "3年|4年")
を代替学年とここでは呼ぶことにします。
3・4年の代替学年は3年と4年です。2つ以上の場合は|で区切って登録します。|は半角です。
1つなら、"3年"
2つなら、"3年|4年"
3つなら、"3年|4年|5年"
のように登録します。
""の場合は、代替学年がないことを示します。
4.学年の追加について
もし、5年を追加の学年として管理することになった場合は、
banArr = Array("1年", "2年", "3・4年","5年")
なりますが、代替学年も、追加しておきます。
5年に対応する代替学年がないので
banAltArr = Array("", "", "3年|4年","")
のようにします。
banArrの要素の数(カンマで区切った数)とbanAltArrの要素の数が一致しないと異常停止しますので注意してください。
お世話になっております。
Sheet1のイメージ:https://gyazo.com/b083d5d3c99b96edd2c71b1c58b74def
Sheet2のイメージ:https://gyazo.com/951b43feb5b25a7067428c4fe0be9059
Sheet3のイメージ:https://gyazo.com/51cf8a2d7f518b51e2d8b08f52f50175
上記の環境で、頂いたプログラムを実行すると、下記のエラーが出ました。
エラー:https://gyazo.com/1952be2d5a7190c72d5759d23a6f69b2
私の方で、また何かしらミスを犯してしまっていたら、本当に申し訳ございません。何度も、ご迷惑をお掛け致しまして、誠に申し訳ございません。
何卒、よろしくお願い申し上げます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Visual Basic(VBA) エクセルマクロでアニメを作る方法を教えてください。 1 2023/02/07 14:27
- Visual Basic(VBA) VBAで自動集計(特定セルコピー月ごとに値貼り付け)したい。 6 2023/06/25 11:37
- Visual Basic(VBA) Excel vbaについて知恵もしくは、コード教えて下さいm(__)m ① 表にあるデータをコピー、 2 2022/09/01 23:57
- Excel(エクセル) エクセルで”入力シート”の文字書式の変更を”出力シート”で同じ文字書式で印刷したいです。VBA希望 4 2023/04/24 11:07
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Excel(エクセル) 【Excel質問】 「本日の日付」から指定条件を満たす営業日経過後の日数を表示させる関数式 3 2022/06/06 23:28
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/21 09:28
- Excel(エクセル) Excelの数式についての質問 1 2022/10/31 15:50
- Excel(エクセル) 【マクロ】同じフォルダ内にある複数ブックから1つのブック内の1シートにデータを集めたい 6 2022/09/28 18:16
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定のセルが空白だったら、そ...
-
ExcelVBAを使って、値...
-
VBAでセルをクリックする回...
-
VBからEXCELのセルの値を取得す...
-
Excelで指定した日付から過去の...
-
特定の文字を条件に行挿入とそ...
-
【Excel】指定したセルの名前で...
-
Sub 要具ライフ() ActiveSheet....
-
任意フォルダから画像をすべて...
-
i=cells(Rows.Count, 1)とi=cel...
-
【VBA】飛び飛びの3セルに"完了...
-
Excel VBAで比較して数値があっ...
-
Excel VBA、 別ブックの最終行...
-
【Excel VBA】指定行以降をクリ...
-
TODAY()で設定したセルの日付...
-
エクセル(Excel) ワイルドカー...
-
EXCELで変数をペーストしたい
-
エクセルVBAで、シート上で結合...
-
ExcelのVBAで数字と文字列をマ...
-
VBAの計算で@が出てしまう件
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelVBAを使って、値...
-
特定のセルが空白だったら、そ...
-
【Excel VBA】指定行以降をクリ...
-
i=cells(Rows.Count, 1)とi=cel...
-
【Excel】指定したセルの名前で...
-
Excelで指定した日付から過去の...
-
特定の文字を条件に行挿入とそ...
-
Excel VBA、 別ブックの最終行...
-
EXCELで変数をペーストしたい
-
Excelのプルダウンで2列分の情...
-
Excel vbaで特定の文字以外が入...
-
TODAY()で設定したセルの日付...
-
screenupdatingが機能しなくて...
-
DataGridViewの各セル幅を自由...
-
Sub 要具ライフ() ActiveSheet....
-
【EXCEL VBA】Range("A:A").Fi...
-
VBAを使用した時間管理
-
VBAでセルをクリックする回...
-
セル色なしの行一括削除
-
エクセルVBAでコピーして順...
おすすめ情報
tatsumaru77さま
お世話になっております。
この度は、本当にお世話になりました。
tatsumaru77さんのお陰で、今ところは、問題なく処理が行われております。ひとえに、tatsumaru77さんのお力添えのお陰です。心より、感謝申し上げます。本当に、ありがとうございました。
そろそろ締め切られ、コメントも出来なくなるので、ベストアンサーに選ばせて頂きたいと存じます。現在は、少しずつですが、VBAの勉強もしております。また、Excelや、VBAでつまずくことがありましたら、恐縮ではございますが、また、お力をお貸し頂けると幸いです。
今後とも、何卒、よろしくお願い申し上げます。