[[20160212211213]] 『特定条件化の列の削除』(AGI) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『特定条件化の列の削除』(AGI)

このサイトで参考させて頂いたり
質問させて頂いてお世話になっております。
マクロで料金を転記させる方法に取り組んでおり
他の方の力を借りて、なんとか転記させることは出来たのですが
転記した後の料金表で、加工する必要があり、
その加工する条件が色々あって、マクロをどのように組めばいいのか
行き詰ってしまったので、お力を貸していただきたく
投稿させて頂きます。

料金表のシートがあって
項目の見出しがあってその項目の数は変動して
IDも記載されますが、そのIDの数も変動しており
行も列も変動します。
7行目からIDや料金が始めるのは変動しません。

それぞれ、項目ごとに料金が記載されて
最初に対象外の項目の料金が7行目以降から全て0円なら列ごと削除をし

次に、まとめの項目を見て7行目から全て0円の項目があった場合
同じ項目の列を削除する

概要図も書いたのですが、正直伝わりにくい部分がかなりあると思うのと
投稿フォームのスペースの関係上、書ききれていない部分があるので
参考資料のエクセルをUPローダーに用意しました。

http://www.dotup.org/uploda/www.dotup.org736074.xlsx.html
PASS:12345678

最初にIDの列の長さをfor文で取得して
まとめの列を比較させれば作れると思ったのですが、
行も列も変動するので構想すら行き詰ってる状態になってしまいました。

色々と構成図の関係で伝わりにくい部分や分かりにくい部分があるので
不明な点やどういう構成かの質問については、適宜、答えさせていただきます。
宜しくお願い致します

1    
2
3
4          
5  項   I   ● 分野別 ●       ●対象外●        ●まとめ●
6  番   D    AA   BB  小合計  AA  BB  小合計 AA BB
7  1   000-1  \100 \ 0   \100    \0  \0   \0  \100 \0
8  2   000-2  \200 \ 0   \200    \0  \0   \0  \200 \0
9  3   000-3  \100 \ 0   \100    \0  \0   \0  \100 \0

マクロ実行
・最初に対象外のAAとBBの列の額がすべて\0なら列ごと削除

・次に、まとめの項目(今回の場合、AA、BB)を見て
 全部\0の場合、列ごと削除しつつ、分野別の全部\0の列も削除

(今回の場合、まとめのBBの金額が全て\0なので、まとめの項目BBの列ごと削除して
 分野別の項目BBの列も削除)

実行後
1    
2
3
4          
5  項   I   ● 分野別 ●     ●まとめ●
6  番   D    AA    小合計   AA 
7  1   000-1  \100    \100   \200
8  2   000-2  \200    \200   
9  3   000-3  \100    \100   \100

< 使用 Excel:Excel2010、使用 OS:Windows7 >


詳しく読んでいませんが、すぐに浮かぶ疑問は、
消去でなく何故削除なのかということです。

まず「削除」ありきで考えるのではなく、
手段としての「削除」はひとまず置いて、
全体として何をされたいかをまず書いてみてはどうですか?

つまり、全体としてのやりたいことのなかで、
本当に削除は必要なのですか?
非表示の利用とか検討されましたか?

(γ) 2016/02/12(金) 22:05


γ様

全体の中で、削除をやりたいことは間違いありません。
非表示については、項目を消して整理するという形で使用するためです。

全体でやりたいことは

対象外の項目の列の項目が0円なら列ごと削除

まとめの項目の中で全ての金額が0円なら列ごと削除
更に、同じ項目の列も削除という形です。

まとめると、こんな形ですが
今一、伝わりにくいかもしれません。
コメントありがとうございます。

(AGI) 2016/02/12(金) 22:17


 ざっと拝見しましたが、結合セルがあるので、結構、面倒かもしれませんね。
 回答ではなく、所感で恐縮です。

 ・この種のデータは、単純なレイアウトでベタベタと、かつシンプルに持っておいて、見た目を向上させなければいけない場合に
  そのシンプルなデータを元に編集を行うのが得策なのかなと思います。
  このレイアウト以外のまとめかたがほしい場合も、元データから、いかようにも編集できますので。

 ・なによりも、強く感じたのは、なんらかの処理で、このような「実行前結果」が作られてしまった。
  で、それを、なんとかして、実行後結果のような形に補正したい。
  さらには、その補正で考えられる不具合(エラー表示等)は、また、別途の処理で三次補正を行う。
  このような方法は、感心しません。
  そもそもが、【実行前結果】をつくっている部分に手を入れて、最初から【実行後結果】が作成されるように
  すべきではないでしょうか?

(β) 2016/02/12(金) 22:36


削除はかなりコストがかかる
(取扱が複雑になったり、Excelに負担がかかったり、
 それを参照しているセルがあれば修復が必要だったり手間がかかります)ので、
 できれば削除、挿入は避けた方が賢明だと考えています。

質問を変えましょう。
(Q1) 削除するだけですか?今後挿入することはないのですか?
(Q2) その表はどうやって作成したのですか?
   0円のものは最初から作らなければいいんじゃないですか?

# ちまちま書いていたら、βさんからポイントをついたコメントが。
# そう、そういうことを言いたかったのね。
(γ) 2016/02/12(金) 22:40


β様
資料拝見ありがとうございます。
「実行前結果」は、別シートから料金が記載されているものから
文言と突合して転記しています。ちなみに、そのコードは私が作成したのではなく
別の方が作成されています。

そもそもが、【実行前結果】をつくっている部分に手を入れて、 最初から【実行後結果】が作成されるようにすべきではないでしょうか?

転記させる時点で判定させるようにする方法があればよかったのですが
文言が相当あるため、「実行前結果」が作成されてから
判定させたほうがいいと判断した次第です。
大元の転記させる時点で判定させる視点はありませんでした。
アドバイスありがとうございます。

γ様
(Q1) 削除するだけですか?今後挿入することはないのですか?

A1:質問にある通り、削除するだけで挿入することはありません。

(Q2) その表はどうやって作成したのですか?

   
A2:別のシートから縦書きの料金表から突合させて転記しています。
  (β様の返信で記載してる通り私が作ったマクロではありません)

A2:0円のものは最初から作らなければいいんじゃないですか?
  全て0円であるかどうかを転記後に判定させる事の観点しかなかったので
  事前に判定させて転記させなければいいというのもおっしゃる通りです。
  ですが、その判定させる事は返信頂いて気付きました。

お二人ともアドバイスありがとうございます。
元データから判定させる観点はまったくなかったので
その観点からも考えてみます。
(AGI) 2016/02/12(金) 23:00


元データはどんな形式なんですか?
>他の方の力を借りて、なんとか転記させることは出来たのですが
それはどこかの掲示板か何かですか?
(掲示板なら、その記事を紹介してみては?)
もし、周囲の人に書いてもらったということなら、
その方にもう一度説明してお願いしてみてはどうですか?

(γ) 2016/02/12(金) 23:06


返信、遅れて申し訳ありません。
転記元の請求データですが、フォームで投稿するのは
スペース的に厳しいので、エクセルを添付いたします。

http://www.dotup.org/uploda/www.dotup.org736756.xlsx.html
PASS:12345678

コードを書いた方は、職場の方ですが
その方は退職しているので、こちらの掲示板で相談させて頂きました。

(AGI) 2016/02/13(土) 08:48


 Password が違っているようで閲覧できません。
 また、その方が書いたコードも拝見できれば、分析して対応案をアップされる回答者もでてくるかもしれません。
 (今のところ、βは、その気力が出てくるかどうかは、なんともいえません・・・)

(β) 2016/02/13(土) 14:35


β様
申し訳ありません。
パスワード間違っておりました。
再度、あげなおしました。(確認済みです。 申し訳ありません)
http://www.dotup.org/uploda/www.dotup.org737621.xlsx.html
PASS:12345678

色々とアドバイスありがとうございます。
まずは結果出来上がったものをどうするかというより、
先に転記する際に判定させる条件を考えていきたいと思います。

色々とお手数をかけて申し訳ございません
(AGI) 2016/02/13(土) 21:29


 >>まずは結果出来上がったものをどうするかというより、 
 >>先に転記する際に判定させる条件を考えていきたいと思います。 

 それがよろしいかと思います。
 元データ拝見しましたが、私がコメントした、淡々としたデータになっているので、これを元に
 実行後レイアウトに落とし込むのは、そんなに困難ではないと思われますね。

 項目単位にすべて0ではない行の有無を調べ、すべて0の行による項目は、削除し、最初からなかったことにするような
 加工方法が簡単かもしれません。

(β) 2016/02/13(土) 21:48


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.