亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

目次
再帰的なラムダ関數(shù)
不要なキャラクターを削除するための再帰的なラムダの例
Excelで再帰的なラムダを書く方法
コア式を作成します
コア式をラムダ関數(shù)に変換します
Lambda関數(shù)を再帰的に呼び出すようにします
Lambda定義の関數(shù)に名前を付けます
Excelで再帰的なラムダを使用する方法
再帰を理解する
再帰的なラムダ機能のその他の例
例1。不要な文字を削除し、余分なスペースをトリミングします
例2。複數(shù)の文字を同じ文字に置き換えます
例3.複數(shù)の値を他の値に一度に置き換える
再帰的なラムダス対VBAユーザー定義関數(shù)
複數(shù)の文字を削除するための再帰的なラムダ
複數(shù)の文字を再帰的に削除するユーザー定義の関數(shù)
複數(shù)の文字を削除するユーザー定義の関數(shù)非再帰的
ダウンロード用のワークブックを練習(xí)します
ホームページ トピック excel 例を備えたExcelの再帰的なラムダ機能

例を備えたExcelの再帰的なラムダ機能

Mar 31, 2025 pm 01:54 PM

このチュートリアルの目的は、再帰機能の概念を説明し、Excelで再帰的なラムダを作成するための一般的なアプローチを?qū)g証することです。私たちは、あらゆる側(cè)面を詳細に探求し、ワークシートで簡単にフォローして再現(xiàn)できるようにします。

Lambda関數(shù)の導(dǎo)入により、VBAプログラマーだけでなく、Excelの再帰計算が誰でも利用可能になりました。簡単に言えば、プログラミング言語のように振る舞う式を構(gòu)築し、非常に少なく、非常に速く達成できるようにすることができます:)

このチュートリアルで説明した例は、Lambdaの構(gòu)文と基本的な用途をすでに知っていることを暗示していることを覚えておいてください。そうでない場合は、Essentials:ExcelでLambdaを書いて使用する方法から始めるのは理にかなっています。

再帰的なラムダ関數(shù)

全員が同じページにいることを確認するには、まず再帰機能が何であるかを判斷しましょう。

コンピューターサイエンスでは、再帰は、関數(shù)が直接的または間接的にそれ自體を呼び出す問題を解決する方法です。このような関數(shù)は再帰的と呼ばれます?;镜膜?、再帰関數(shù)は反復(fù)によって機能し、同じ問題の小さなインスタンスを解くことにより、より大きな問題の解決策を見つけます。

現(xiàn)在、Lambdaは再帰をサポートする唯一のExcel関數(shù)であり、コーディングなしで複雑な問題のためのコンパクトでエレガントなソリューションを作成できます。

VBAでは、通常、 for…nextまたはdo ... while loopを使用して再帰が行われます。 Lambdaは通常、IF関數(shù)に依存して、ブール條件をテストし、條件が真または偽のかどうかを再開します。

これが再帰的なラムダ機能の構(gòu)造です。最も単純な形式です。

= lambda(x、y、…、 'パラメーターを宣言するif(logical_test、 '條件mylambda()をテストします。

重要なポイントは、再帰的な呼び出しが永遠に続くのを止めることです。このために、エンディングケース停止ケース、またはベースケースとも呼ばれます)を提供する必要があります。出口ポイントが提供されていない場合、コンピューターがクラッシュするまでフォーミュラが繰り返され続けます。もちろん、#numを投げます!エラー。

非再帰機能と比較して、再帰的なラムダは、書き込み、テスト、デバッグがより困難です。古き良き鶏肉と卵の謎に似ています - 機能が正しく機能するためには、それ自體を呼び出さなければなりません。それ自體を呼び出すために、関數(shù)は正しく動作する必要があります:)

不要なキャラクターを削除するための再帰的なラムダの例

外部ソースからデータをインポートする場合、ゴミ文字はしばしばこっそり入り込む可能性があり、何らかの形でデータをクリーニングする方法を見つける必要があります。

交換されたすべての機能は、特定のキャラクターを何も置き換えて、特定のキャラクターのすべての発生を削除することができますが、一度に1つの文字にしか処理できません。

いくつかのセルのすべての不要な文字をリストし、式を使用して1回の急降下でそれらを排除するためにより、はるかに高速で便利なことがあります。再帰的なラムダは、まさにあなたが必要とするものです:

=LAMBDA(data, chars, IF(chars"", RemoveChars(SUBSTITUTE(data, LEFT(chars, 1), ""), RIGHT(chars, LEN(chars) -1)), data))

カスタムラムダ関數(shù)はRemoveCharsという名前で、2つの入力パラメーターが必要です。

  • データ- 洗浄するセルまたは一連のセル。
  • CHARS-削除する不要なキャラクター。テキスト文字列またはセルの參照の形式で提供できます。セルでは、スペースも根絶したい場合を除き、キャラクターはスペースなしでリストされる必要があります。

高いレベルで、ここに関數(shù)が行うことがあります:

RemoveCharsは、除外リスト( CHARS )を循環(huán)し、一度に1つの文字をパージします。各再帰コールの前に、IF関數(shù)は殘りのcharを評価します。文字列が空でない場合(chars "")、関數(shù)はそれ自體を呼び出します。最後の文字が処理されるとすぐに、反復(fù)プロセスが終了します - フォーミュラは現(xiàn)在の形式でデータを返し、終了します。

逆ロジックも機能します。文字列が空の場合(chars = "")、現(xiàn)在のデータを返して終了します。それ以外の場合は、 RemoveChars関數(shù)を呼び出します。

=LAMBDA(data, chars, IF(chars="", data, RemoveChars(SUBSTITUTE(data, LEFT(chars, 1), ""), RIGHT(chars, LEN(chars) -1))))

どちらのアプローチを選択しても、結(jié)果はまったく同じになります。

例を備えたExcelの再帰的なラムダ機能

ヒント。同じタスクは、正規(guī)表現(xiàn)で簡単に実現(xiàn)できます。詳細については、特殊文字を削除するにはExcel Regexを參照してください。

Excelで再帰的なラムダを書く方法

免責(zé)事項から始めたいと思います:) Excelに再帰的なラムダを構(gòu)築する文書化された方法はありません。これは、機能が真新しいことを考えると説明できます。私は自分のやり方を共有しますが、それはあなたに役立つかもしれません。

コア式を作成します

一般に、あなたはあなたのラムダ関數(shù)の望ましい動作をエミュレートするコア式を書くことから始めます。私たちの場合、究極の目標は特定のキャラクターを何もないことに置き換えることであり、Excelにはすでに理想的な楽器があります - 代替機能:

代替(Text、Old_Text、New_Text、[instance_num])

代用するには、供給する必要があります。

  • テキスト- 文字を置き換えるテキスト。私たちの場合、それはA2のテキスト文字列です。
  • old_text-置き換える文字。 D2のすべてのキャラクターを確認する必要があります。それは、左端のキャラクターから始める理由があります。左の関數(shù)は私たちのために簡単にそれを取得できます:

    LEFT(D2, 1)

  • new_text- old_textを置き換える文字。明らかに、それは空の文字列( "")です。
  • instance_numはオプションであり、私たちの場合は必要ありませんので、省略されています。

その結(jié)果、私たちのコア式はこの形をとります。

=SUBSTITUTE(A2, LEFT(D2, 1), "")

例を備えたExcelの再帰的なラムダ機能

代替は一度に1つの交換を行うことができるため、D2の除外リストに文字があるのと同じくらい何度も実行する必要があります。問題は、次のキャラクターを処理するように強制するにはどうすればよいですか?そして、これが答えです:

反復(fù)ごとに、左から1つのキャラクター、つまりすでに見られたキャラクターを取り除きます。 LENと組み合わせた正しい関數(shù)は、簡単にそれを行うことができます:

=RIGHT(D2, LEN(D2) -1)

後続の各代替物は、以前の代替物の結(jié)果をテキスト引數(shù)として使用していることに注意してください。つまり、元の文字列(a2)ではなく、以前の代替機能(b2)によって返された文字列に置き換えを行うことに注意してください。

例を備えたExcelの再帰的なラムダ機能

コア式をラムダ関數(shù)に変換します

覚えているように、私たちのカスタム関數(shù)はRemoveCharsと名付けられることになっており、データCharの2つのパラメーターがあります。

あなたの仕事は、各パラメーターを計算する方法について関數(shù)を指示することです。

  • データ- 文字を置き換える文字列。代替式によって提供されます。
  • CHARS-削除する文字。適切な式で提供されます。

あなたがすることは、単に上記の2つの式を、それらをコンマで分離するRemoveChars関數(shù)の內(nèi)部に配置するか、またはExcelの関數(shù)の引數(shù)を分離するために使用されるキャラクター(地域設(shè)定で設(shè)定されたリストセットされたリストで決定)を配置することです。

RemoveChars(SUBSTITUTE(A2, LEFT(D2, 1), ""), RIGHT(D2, LEN(D2) -1))

Lambdaはセル?yún)⒄栅扦悉胜靴楗岍`ターを操作していることに留意して、次のステップはA2をデータに、D2をCharsに変更することです。

RemoveChars(SUBSTITUTE(data, LEFT(chars, 1), ""), RIGHT(chars, LEN(chars) -1))

RemoveChars関數(shù)が完了しました。悲しいことに、この時點でそれをテストする方法はありません。以前のテストの結(jié)果に頼って、必要に応じて後でデバッグを行うことができます。

Lambda関數(shù)を再帰的に呼び出すようにします

これは、「理論的式」を?qū)g用的なソリューションに変える重要な部分です。

カスタムラムダと同様に、パラメーターを宣言することから始めます。

=LAMBDA(data, chars,

次に、特定の狀態(tài)を評価し、結(jié)果に応じて再帰または出口を呼び出します。出口のポイントを確立することは重要な考慮事項です。そうしないと、ループから抜け出すことができないため、式は正しく機能しません。

私たちの場合、IF関數(shù)は、 Charsリストが空白でないかどうかを確認します(Chars "")。 True( Charsが空ではない)の場合、RemoveChars関數(shù)を呼び出します。 false( charsが空)の場合、データを現(xiàn)在のフォームと出口を返します。

これは一般的なアプローチです:

=LAMBDA(data, chars, IF(chars"", RemoveChars(…), data))

そして、これはその完全な形の本當の式です:

=LAMBDA(data, chars, IF(chars"", RemoveChars(SUBSTITUTE(data, LEFT(chars, 1), ""), RIGHT(chars, LEN(chars) -1)), data))

または、 charsが空白であるかどうかを確認できます(chars = "")。 trueの場合、データを返して終了します。 False Call RemoveCharsの場合。

コンセプト:

=LAMBDA(data, chars, IF(chars="", data, RemoveChars(…)))

完全な式:

=LAMBDA(data, chars, IF(chars="", data, RemoveChars(SUBSTITUTE(data, LEFT(chars, 1), ""), RIGHT(chars, LEN(chars) -1))))

Lambda定義の関數(shù)に名前を付けます

再帰的なラムダを命名することは、非回復(fù)的な仲間を命名することと違いはありません。

  1. CTRL 3ショートカットを押して名前マネージャーを開き、 [新規(guī)]をクリックします。
  2. [新しい名前]ダイアログボックスで、次のことを行います。
    • 名前ボックスに、関數(shù)の名前: RemoveCharsを入力します。
    • スコープをワークブックに設(shè)定したままにします。
    • ボックスを參照するには、ラムダの式を貼り付けて、それが平等記號で始まることを確認します。
    • オプションで、詳細については、コメントボックスにパラメーターの説明を入力してください。
    • [OK]をクリックして、新しい機能を保存します。

      例を備えたExcelの再帰的なラムダ機能

Excelで再帰的なラムダを使用する方法

それは最も簡単な部分です:)あなたのラムダ関數(shù)が名前を取得したら、他のネイティブ関數(shù)と同じようにそれを使用できます。

エンドユーザーの観點から見ると、カスタム関數(shù)の構(gòu)文はこれと同じくらい簡単です。

RemoveChars(データ、チャー)

たとえば、A2:A10(データ)のデータをクリーンするには、D2( CHAR )に不要な文字を入力し、B2に以下の式を入力します。

=RemoveChars(A2:A10, D2)

おそらくご存知のように、Excel 356では、すべての式は本質(zhì)的に動的な配列式です。したがって、式を1つのセル(B2)に入力すると、すぐにすべての結(jié)果が得られます(この動作はこぼれています)。

例を備えたExcelの再帰的なラムダ機能

従來の「1つの式 - 1つのセル」の動作を好む場合は、データにセル?yún)⒄眨ˋ2)を使用し、$サインでCHARSセルアドレス($ d $ 2)をロックして、式をコピーするときに変更するのを防ぎます。

=RemoveChars(A2, $D$2)

上記の式はB2に移動し、B10を介してドラッグします。

例を備えたExcelの再帰的なラムダ機能

セル內(nèi)の削除された文字をリストする代わりに、テキスト文字列として式に直接供給できます。

=RemoveChars(A2:A10, "_^*/&%")

例を備えたExcelの再帰的なラムダ機能

注記。コアフォーミュラで使用される代替機能は大文字と小文字であるため、カスタム関數(shù)は大文字と小文字を異なる文字として扱います。特定の文字を削除する場合は、文字ケースに関係なく「x」と言いたい場合は、文字列に「x」と「x」の両方を含めます。

再帰を理解する

再帰的なラムダを理解する手がかりは、各反復(fù)で何が起こるかを正確に知ることです。私たちの例では、そのようなことが2つあります。

  • 以前の代替の結(jié)果は、ネストされた代替機能を使用しているかのように、次のRemoveCharsの呼び出しの新しいデータパラメーターになります。
  • Chars文字列は1つの文字によって削減されます。あなたはそれを一種のカウントダウンと考えることができます。 Chars文字列が空になると、反復(fù)プロセスが停止し、式は最終結(jié)果として現(xiàn)在の形式でデータを返します。

以下の表は、再帰プロセスをよりよく視覚化するのに役立ちます。

例を備えたExcelの再帰的なラムダ機能

再帰的なラムダ機能のその他の例

以下の例では、既存のLambda関數(shù)を新しい機能で拡張してニーズに合わせて調(diào)整する方法について説明します。

例1。不要な文字を削除し、余分なスペースをトリミングします

さまざまな無関係な文字に加えて、データには過度のスペースが含まれている場合があります。それらを取り除くために、組み込みの関數(shù)のようにトリムの內(nèi)部にリムーヴェーチャーをネストすることができます:

=TRIM(RemoveChars(A2:A10, F2))

効果を確認するには、列BとDの結(jié)果を比較してください。後者の場合、不要な文字が削除されるだけでなく、すべての先頭および後続のスペースも削除されますが、內(nèi)側(cè)の空間は単語間の単一のスペース文字に縮小されます。

例を備えたExcelの再帰的なラムダ機能

毎回ネスティングを気にしたくない場合は、ラムダ自體の中で1回限りのセットアップとしてそれを行うことができます。

=LAMBDA(data, chars, TRIM(IF(chars"", RemoveTrim(SUBSTITUTE(data, LEFT(chars, 1), ""), RIGHT(chars, LEN(chars) -1)), data)))

改善された関數(shù)はRemovetrimという名前で、魅力のように機能します。

=RemoveTrim(A2:A10, D2)

例を備えたExcelの再帰的なラムダ機能

例2。複數(shù)の文字を同じ文字に置き換えます

特定のシナリオでは、いくつかの異なる文字を指定する別の文字に置き換えることは理にかなっています。実際、それは私たちのRemoveChars関數(shù)が実際に行うことです - 指定された文字を空の文字列( "")に置き換えます。ただし、式で直接定義したいのに、交換用の文字はハードコーディングされています。それを行うには、関數(shù)にもう1つのパラメーター、たとえばnew_charを追加する必要があります。

したがって、私たちの新しい関數(shù)、それを交換用の名前にしましょう、次の構(gòu)文があります:

交換(データ、chars、new_char)

RemoveCharsを交換用チャーに変換するには、3つの小さな編集を行う必要があります。

  • 3 RDパラメーター-NEW_CHARを定義します。
  • ハードコーディングされた空の文字列( "")をnew_charに置き換えます。
  • new_charを3 rd引數(shù)としてapplecteChars関數(shù)に渡します。

その結(jié)果、複數(shù)の文字を再帰的に置き換えるために、もう1つの有用なラムダが得られます。

=LAMBDA(data, chars, new_char, IF(chars"", ReplaceChars(SUBSTITUTE(data, LEFT(chars), new_char), RIGHT(chars, LEN(chars)-1), new_char), data))

たとえば、サプライヤーが突然IDまたはSKUの形式を変更した場合、この式を使用して、すべての不適切な文字(E1)を適切な文字(E2)に置き換えることができます。

=ReplaceChars(A2:A6, E1, E2)

例を備えたExcelの再帰的なラムダ機能

例3.複數(shù)の値を他の値に一度に置き換える

この例は、その前のものの論理的な拡張です。今回は、単一の文字ではなく単語全體(または文字列)を置き換え、各単語には獨自の置換値があります。

古い値と新しい値は別々のセルに配置されるため(下のスクリーンショットに示すように)、前の例で使用した正しい関數(shù)は機能しません。古い/新しいペアをループするには、何か他のものを把握する必要があります。うーん、特定のセルから指定された數(shù)の行と列を移動する機能がExcelにあるようです。うん、それはオフセットです!

主な方法が確立されているため、交換機能を書くことは大したことではありません。

交換(データ、古い、新規(guī))

データの場合、古い値を新しい値に置き換えるために、その基本形式で代替機能を使用しています。

SUBSTITUTE(data, old, new)

古い値を取得するために、古いリストの最上部のセルから始めて、各インタラクションで1列を下に移動します。

OFFSET(old, 1, 0)

新しい値を取得するために、まったく同じことを行いますが、もちろん、新しいリストでは次のことを行います。

OFFSET(new, 1, 0)

最後に、IFの助けを借りて既に馴染みのある出口戦略を?qū)g裝し、あなたの新しい強力な再帰的なラムダは使用の準備ができています(名前マネージャーに名前を付けることを忘れないでください:)

=LAMBDA(data, old, new, IF(old"", ReplaceAll(SUBSTITUTE(data, old, new), OFFSET(old, 1, 0), OFFSET(new, 1, 0) ), data))

A2:A10のソースデータ、D2で始まる列Dの古い値、および列Eの新しい値がE2で始まると、この単純な式で複數(shù)の置換を行うことができます。

=ReplaceAll(A2:A10, D2, E2)

その結(jié)果、B2の単一の式は、A2:A10のすべての略語を?qū)潖辘工毳榨毳桐`ムに置き換えます。

例を備えたExcelの再帰的なラムダ機能

再帰的なラムダス対VBAユーザー定義関數(shù)

プログラミングの背景を持つ高度なExcelユーザーは、再帰的なラムダ関數(shù)が同等のVBAコードとどのように相関するかを知りたいと思うかもしれません。さて、見てみましょう。

複數(shù)の文字を削除するための再帰的なラムダ

ご存知のように、これは非機能的な擬似コードです。私たちはそれをVBA編集者に入れて、何が起こっているのかをよりよく理解するために、おなじみの形でアルゴリズムを表す:)

= lambda(data、chars、 'parameters parameters if (chars "" 、 ' charsが空のremoveChars(代替(データ、左)、 "")、 "" )、 'trueの場合、removeCharsの右(chars、len(chars)-1))、データの場合、false、false、exit ))

複數(shù)の文字を再帰的に削除するユーザー定義の関數(shù)

そして、これは、類似のユーザー定義関數(shù)をVBAでどのように記述することができるかです。

関數(shù)RemoveCharsRecursive(data as String 、chars as stringif"" chars) then data(data、left(chars 1)、 ""chars = right(chars、 len (chars)-1)removecharsrecursive = removeCharsRecursive = removecharsRecursive = removecharsRecursive

複數(shù)の文字を削除するユーザー定義の関數(shù)非再帰的

同様の関數(shù)は、非再帰的方法を使用して記述することもできます。この場合、 RemoveCharsを別の関數(shù)として書き込み、 Chars文字列が空でない場合にRemoveCharsNonの再us式関數(shù)內(nèi)から呼び出します。

関數(shù)RemoveCharsNonRecursive( String 、Chars as Stringwhire " chars data = removeChars(data、chars)chars = right(chars、len( chars )-1)wend removecharsnonecursive = data end function function removechars( sting as string as string as string as string as ined)

同じタスクを別の方法で達成できます。除外文字を1からLEN(CHARS)に反復(fù)させ、データにあるCharを空の文字列に置き換えることができます。 MID関數(shù)は、 Chars Stringから1つずつ各文字を抽出するために使用されます。

関數(shù)RemoveCharsNonRecursive2(データとしてデータ、文字列として文字列として)index = 1 to len(chars)data = fact(data、mid(chars、index、1)、 ""次のRemoveCharsNonRecursive2 =データエンド関數(shù)=データエンド関數(shù)

VBAユーザー定義関數(shù)と比較して、ラムダを使用することの利點は何ですか?何よりもまず、マクロ対応の.xlsmファイルとしてワークブックを保存する必要はなく、すべてのオープニングでマクロを有効にする問題を節(jié)約します。

うまくいけば、このチュートリアルが、再帰的なラムダがExcelでどのように見えるかについての洞察を得るのに役立つことを願っています。お読みいただきありがとうございます。來週のブログでお會いしましょう!

ダウンロード用のワークブックを練習(xí)します

再帰的なラムダの例(.xlsxファイル)VBAユーザー定義関數(shù)(.xlsmファイル)

以上が例を備えたExcelの再帰的なラムダ機能の詳細內(nèi)容です。詳細については、PHP 中國語 Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當する法的責(zé)任を負いません。盜作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中國語版

SublimeText3 中國語版

中國語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)