ツイッター出題回答
脱字メーカー(文字列から1文字削除)

ExcelマクロVBAとエクセル関数についての私的雑感
公開日:2022-09-05 最終更新日:2022-09-06

脱字メーカー(文字列から1文字削除)


ツイッターで出したエクセルの問題です。


誤字脱字は気を付けてもなかなか・・・
今回はエクセル関数で意図的に脱字を作ろうという問題です。
関数は組み合わせかた次第です。


出題ツイート

出題ツイートへのリンク

【エクセル問題】※関数は組み合わせだ編
脱字メーカー
A列の文字列から1字消した全パターンを出力して下ください。

Excel エクセル問題 脱字メーカー


引用リツイートでの回答

出題者としての解答

解答ツイートへのリンク

REPLACE関数を使うのが一番分かり易いと思います。
=REPLACE(A1,SEQUENCE(,LEN(A1)),1,"")
SEQUENCE関数で1,2,...と連番を作成し、脱字させる位置をずらします。
SEQUENCE関数の連番を横配列にすることで横にスピルします。

Excel エクセル問題 脱字メーカー


スピル以前のバージョンで、かつ配列数式も使わずに数式を書くなら。
=IF(COLUMN()-1>LEN($A1),"",REPLACE($A1,COLUMN()-1,1,""))
先のSEQUENCE関数をCOLUMN関数の相対参照に変更しています。
フィルでコピーした時に文字数を超えても良いようにIF関数で判定させました。

Excel エクセル問題 脱字メーカー


最後に最新関数を使って…
=LAMBDA(x,
LET(
L,LEN(x),
vs,SEQUENCE(L),
hs,SEQUENCE(,L),
ar,MID(x,vs,1),
vh,LAMBDA(x,y,IF(x=y,0,x)),
BYCOL(vh(vs,hs),LAMBDA(x,CONCAT(FILTER(ar,x)))))
)(A1)
無駄に難しくしてしまったか😅

Excel エクセル問題 脱字メーカー


分かりづらいのはこの部分でしょうか。
vh,LAMBDA(x,y,IF(x=y,0,x))
この関数にSEQUENCE(L)と,SEQUENCE(,L)、つまり縦配列と横配列を入れることで2次元の配列を作成しています。
BYCOL(vh(vs,hs),LAMBDA(x,CONCAT(FILTER(ar,x))))
この配列をBYCOLで列ごとに処理させてFILTERで0を除いています。

Excel エクセル問題 脱字メーカー


MID(x,vs,1)
これで1文字ずつの縦配列を作成。
この配列をFILTERの引数「配列」に入れて、「含む」に先の2次元の数列からBYCOLで1列ずつ取り出しながら入れていきます。
BYCOL(vh(vs,hs),LAMBDA(x,CONCAT(FILTER(ar,x))))
FILTERの結果をCOCATでつなげて完成です。

Excel エクセル問題 脱字メーカー


前半の数式(REPLACE関数)は、少し慣れれば理解するのはそんなに難しくないと思いますが・・・
後半のLAMBDAはこの説明で解るものでしょうか?
(そもそも数式の書き方が悪いという突っ込みは…とりあえず置いといてください😅)
LAMBDAで数式組んだときの説明って難しいですね・・・




同じテーマ「ツイッター出題回答 」の記事

一覧から複数条件(部分一致、範囲)に合致するデータを抽出する
構成比を合計しても100%にならないと言われた…
振込手数料を先方負担にした時の振込金額と手数料の算出
脱字メーカー(文字列から1文字削除)
リーグ表に対戦番号を振る
数列内の連続偶数のみ順序を入れ替える
ランクによりボイントを付ける(同順位はポイントを分割)
記号を繰り返してグラフ作成(10単位で折り返す)
Excel関数の引数を省略した場合について
シートコピー後のアクティブシートは何か
ByRef引数の型が一致しません。


新着記事NEW ・・・新着記事一覧を見る

テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)
累計を求める数式あれこれ|エクセル関数応用(2024-01-22)
複数の文字列を検索して置換するSUBSTITUTE|エクセル入門(2024-01-03)
いくつかの数式の計算中にリソース不足になりました。|エクセル雑感(2023-12-28)
VBAでクリップボードへ文字列を送信・取得する3つの方法|VBA技術解説(2023-12-07)
難しい数式とは何か?|エクセル雑感(2023-12-07)
スピらない スピル数式 スピらせる|エクセル雑感(2023-12-06)
イータ縮小ラムダ(eta reduced lambda)|エクセル入門(2023-11-20)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
4.繰り返し処理(For Next)|VBA入門
5.変数宣言のDimとデータ型|VBA入門
6.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
7.並べ替え(Sort)|VBA入門
8.条件分岐(IF)|VBA入門
9.セルのクリア(Clear,ClearContents)|VBA入門
10.マクロとは?VBAとは?VBAでできること|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ