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

ExcelマクロVBAとエクセル関数についての私的雑感
最終更新日: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で数式組んだときの説明って難しいですね・・・




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

m/d/yyyy形式文字列を日付シリアル値に変換
成績表(ネ申エクセル)を別表に集計
年月に対して有効な日だけの入力規則のリスト作成
8桁数値が日付として不適切なら赤にする条件付き書式
条件付きの最大値と中央値("A"が2文字の条件)
日付時刻のマイナス表示に対応する方法
一覧から複数条件(部分一致、範囲)に合致するデータを抽出する
構成比を合計しても100%にならないと言われた…
振込手数料を先方負担にした時の振込金額と手数料の算出
脱字メーカー(文字列から1文字削除)
リーグ表に対戦番号を振る


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

スピルとは:スピル基礎から応用までの問題集|エクセル入門(2022-09-26)
リーグ表に対戦番号を振る|ツイッター出題回答 (2022-09-23)
脱字メーカー(文字列から1文字削除)|ツイッター出題回答 (2022-09-05)
スピルとは:旧関数でスピルを使う問題と解説|エクセル入門(2022-09-21)
スピルとは:スピル入門の問題と解説|エクセル入門(2022-09-16)
直積(クロス結合、交差結合)とピボット解除|エクセル入門(2022-09-08)
脱字メーカー(文字列から1文字削除)|ツイッター出題回答 (2022-09-05)
【VBA学習のお勧めコース】|VBA入門(2022-09-02)
振込手数料を先方負担にした時の振込金額と手数料の算出|ツイッター出題回答 (2022-09-01)
構成比を合計しても100%にならないと言われた…|ツイッター出題回答 (2022-09-01)


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

1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.繰り返し処理(For Next)|VBA入門
5.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
6.Excelショートカットキー一覧|Excelリファレンス
7.並べ替え(Sort)|VBA入門
8.マクロって何?VBAって何?|VBA入門
9.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
10.エクセルVBAでのシート指定方法|VBA技術解説




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


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



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