Excelでユーザー関数のエイリアスを定義する方法


3

私はExcelである種のエイリアスを定義する方法を探しています。家計簿のすべての行を分類/タグ付けするこの長い機能があるとしましょう。

= IF(ISNUMBER(SEARCH( "カレー"、$ F2))、 "カレー"、IF(OR(ISNUMBER(SEARCH({"LIDL"、 "TESCO"、 "ALBERT"、 "BILLA"}、$ F2)))) )、 "食料品"、IF(OR(ISNUMBER(SEARCH({"FITINN"、 "GM)   電子 "}、$ F2)))、"楽しい "、" ")))

単に隣接セルをチェックして現在のセルにタグを埋めます。今、この関数が数百行の長さであるとしましょう、それで私はそれをシートのすべての行に置きたくありません。 'tag'という名前のエイリアスを作成し、すべてのセルに= tagを付けます。どうやってそのようなことを達成できますか?


1
この数式を他のセルにコピーしたくない理由は何ですか。
LPChip

1
代わりにUDFを試してください
Raystafarian

10k行にするとファイルが大きくなって不便になりますが、ほとんどの場合、1つの場所で編集するのではなく、すべてのセルに別のタグを追加するたびに数式をコピーする必要があります。
Ren

私はこれがUDFだと思いましたか?申し訳ありませんが、Excelに関する経験はあまりありません。
Ren

回答:


1

あなたはこれの世話をするためにいくつかのVBAを解き放つ必要があります。基本的にはVBAエディタを使ってあなたの関数、あなたのケースでは "TAG"を定義してから、結果のモジュールをあなたのスプレッドシートに添付します。その後、Excelの数式バーで "= TAG(...)"を組み込みのように使用できます。

見る ここに 指導のために。グーグルのための魔法のフレーズは、ユーザー定義関数です。


1

テーブルを使う

ヘッダー行を含むセルの四角形全体を強調表示し、[表の挿入]を選択して表にします。

それからF2のあなたの言及を取り替えなさい [@ColumnTitle] ここで、 "ColumnTitle"はFの列のタイトルです。[ColumnTitle]は列全体を表し、[@ColumnTitle]は現在の行のその列のセルを表します。

行全体を、その行内のすべてのセルで同じ "A1"表記を使用していない式に置き換えたら、 テーブル内の行数に関係なく、数式は1回だけ格納されます。 。セル内で変更すると、列全体で変更され、メンテナンスが大幅に軽減されただけで式が読みやすくなります。

ところで、テーブルでUDFを使用することもできるので、次の式を持つことができます。 =MyUDF([ColumnTitleA],[@ColumnTitleA],Offset([@ColumnTitleB],-1,0)) また、Aのすべてのデータ、現在の行のAのセル、前の行のBのセルを渡します。


0

あなたは、次のことがもう少し簡単になると考えるかもしれません。

=INDEX($F$2:$F$8,MATCH(TRUE,NOT(ISERROR(SEARCH($E$2:$E$8,$A$2))),0))

私は次の設定でそれをテストしました - 上の公式はセル内にあります A5

enter image description here


ヒントをお寄せいただきありがとうございます。式を1つの場所にあるすべてのものに自己完結させることをお勧めしますが、その解決策はうまく編集できるはずです。しかし、それは私の最初の質問には役立ちません。
Ren
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.