へっぽこヘタレシステム管理者の管理人です。
さて、管理にはエクセルの複雑な計算式や関数は、すごく苦手です。
計算式や関数を使うくらいなら・・・
VBAの条件分岐とループを駆使してやろうとしてしまいます。
マクロを使わずに同じキーを持つ複数の行をまとめる
しかし、たまには苦手な計算式と関数を使ってある作業をやってみましたので、忘備録として掲載しておきます。
やりたいことは次のとおりです。
整理番号と備考というカラムを用意して・・・
整理番号と備考に適当に文字列を入力します。
最終的には、同じ整理番号の備考を結合して一つの行にしたい・・・
というものです。
VBAを使う場合は、条件分岐とループ処理でなんとかやったことはあるのですが・・・
計算式と関数で出来るのか?
今回は、計算式と関数で頑張ります。
まずはIF式
=IF(E1<>E2,B2,F1& CHAR(10) &B2)
まずは・・・
E列にA列をコピーしてから・・・
F列に上記の式を入れます。
ちなみに、A列は整理番号でソートしておきます。
こうすることで、F列に同じ整理番号の備考が結合されていきます。
次にLEN
次に、G列に【Len】関数を使って、F列の文字列を計算します。
=LEN(F2)
ここで、整理番号毎のG列の最大値の行を抽出したいのですが、一発でやるやり方が思い浮かびませんでした・・・
誰か教えてください。
結局やり方が分からなかったので、力業ですが・・・
最後にMAXIF
H列に、【MAXIF】関数を使って、整理番号毎のG列の最大値を計算します。
=MAXIFS(G1:G10,E1:E10,E2)
MAXIF関数は・・・
MAXIF(最大値、条件範囲1,条件1)なので・・・
上の式では、G列から最大値を、E列の整理番号ごとに出すということになります。
最後に・・・
I列にフラグを立てます。
=G2=H2
これを文字列がある最後の行までコピーします。
最後にフラグから【TRUE】をフィルタすれば・・・
なんとかやりたいことは出来たがスマートではない
整理番号毎に、備考の文字列がすべて結合された行のみ抽出できます。
なのとかできましたが、手数が多くて面倒です。
もっとスマートなやり方があると思うのですが・・・
こんな方法しか思い浮かびませんでした。
コメント