
きょうの記事は Excel に興味のない方はスルーしてください。
入門者・初心者レベルの方には少し難しいかも?
日数の自動カウント法
最近のサポートで、Excel のサポートをしていたら、困った問題が起こりました。
カンマで区切った1か月間のボランティアの活動日が4か所に分かれて記載されています。区分している理由は活動内容により単価が異なるためです。

あるボランティア団体の活動明細書の一部
何日活動したかは、カンマで区切った「カンマの数+1」を日数として自動的に計算する仕組みにしています。これにより入力者は日数をいちいち数える必要なく、順不同であっても活動日だけ入力すれば、Excel が勝手に数えて表示してくれます。
=IF(D6="",0,LEN(D6)-LEN(SUBSTITUTE(D6,",",""))+1)
「2」なら1回、「2,5,12」ならカンマが2つあるので2+1なので3回
活動日の表示法
ボランティア活動者には実際の費用の1/4~1/5以下のの実費や交通費を集計して、感謝の気持ちを表しています。問題は、その支給額の小さなメモ(支給額計算書)に4種類の順不同な活動日を日付の順に1行で表示する方法です。
「田」の字形式に4つのセルを設けて、別のシートにある(例えば、D6、G6、J6、M6、以下同様)セルを丸ごとコピーするのであれば、Excel の初心者でも簡単にできるでしょう。
しかし、4つすべてを1行に表示するには工夫が必要で、Excel に詳しい方でもちょっと考えてしまいます。
AI に相談してみたら、下記のような本格的な式を提案をしてくれました。
① =TRANSPOSE(SORT(--TEXTSPLIT(TEXTJOIN(",",TRUE,'5月明細'!D6,'5月明細'!G6,'5月明細'!J6,'5月明細'!M6),,",")))
(データを結合した後にバラバラにし、ソートをして並べ替え、再び一つのデータに整列させる方法です。)
しかし、これは「遠見 鶴子」さんの場合、 Excel のルール(この式は結合したセル内では使用できない規則があるため)で「スピルエラー」(セル数が足りない、データ14個に対して8個しかセルがない。)となり、セルを結合しない状態では利用できません。

データの数だけセル数がないと表示できない!
そこで highdy が夜中まで真剣に考えてシンプルにした裏ワザ(?)は、
② =SORT('5月明細'!D6&","&'5月明細'!G6&","&'5月明細'!J6&","&'5月明細'!M6)
(単純にデータを結合し、ソートで並べ替える方法)
ところが、支給額計算書に(特に「遠見 鶴子」さんの場合、結合したセル内であっても書式設定の配置で「縮小して全体を表示する」にしておけば)データは正しく表示できますが、他の人の部分では、「,2,,13」や「1,3,13,15,,,」など「,」が不規則かつ不自然に残ってしまいます。
再び highdy 案を AI 案と比較して折衷案を開発(? それほど大袈裟なものでもありませんが)したのが下の式、これだと実にスマートに結合したセルの中にきれいに入力できます。
③ =SORT(TEXTSPLIT(TEXTJOIN(",", TRUE, '5月明細'!D6, '5月明細'!G6, '5月明細'!J6, '5月明細'!M6), , ","))
(空白のセルも考慮した、より完璧なシンプルな計算式)

活動日の多いの遠見さん(左下)の場合もきれいに表示されている
フォントサイズや配置の書式設定を適切にすれば、すべて自動できれいに1行に表示可能です。
1行おきの小計、合計
実は、冒頭の活動内訳の3,500~1,500円/回の4種の列の小計や合計にも工夫があります。単価×回数で金額を算出していますが、小計や合計は1行おきの数値の計算です。文字列と数値の計算の1行おきであれば、SubTotal関数で小計や合計が簡単に求められます。
しかし、この内訳の中の回数は「,」で複数の日付けを区分しています。
それらは基本的には文字列扱いです。ただ回数が1回の場合は「,」がないので、数値とみなされて誤った計算になります。それを防ぐには、入力者は数値の前に「’」をつけ、文字列であることを Excel に教えておかねばなりません。
何十名且つ何十個(最大31)もの数値入力にいちいち手間はかけられません。
そこで、計算する行を偶数行か奇数行かを考慮した以下の式を使っています。

はてなの仕様なのかどうしても正しく表示されないので、画像に変更しました。
自称発明家の highdy は、どんな専門(機械の設計・開発)外の仕事でもアイディアを考えるのが好きで、多くの取得した工業所有権(特許など)も電気・計装・配管・化学・建築など多分野にわたります。
家庭内には、これらの知識を生かしたものが溢れており、忙しくても楽しい毎日を送っています。





























