問題の定式化
シート上の支払いに関する情報を含むデータベース(リスト、テーブル - 好きなように呼んでください)があります 且つ:
仕事: このリストから選択した任意のエントリの現金領収書 (支払い、請求書など) をすばやく印刷します。 行け!
ステップ 1. フォームを作成する
本の別のシート (このシートを呼びましょう フォーム) 空のフォームを作成します。 あなたはそれを自分で行うことができます.たとえば、Chief Accountant誌のWebサイトまたはMicrosoft Webサイトから取得した既製のフォームを使用できます. 私はこのようなものを得ました:
空のセル (アカウント、金額、受け取り元 など) 別のシートの支払いテーブルからデータを取得します。これについては少し後で説明します。
ステップ 2: 支払いテーブルの準備
フォームのテーブルからデータを取得する前に、テーブルを少し最新化する必要があります。 つまり、テーブルの左側に空の列を挿入します。 を使用して、フォームにデータを追加する行の反対側にラベル (英語の文字「x」とします) を入力します。
ステップ 3. テーブルとフォームのリンク
通信には、関数を使用します VPR(VLOOKUP) – 詳細については、こちらをご覧ください。 この場合、データ シートの「x」とマークされた支払い番号をフォームのセル F9 に挿入するには、セル F9 に次の数式を入力する必要があります。
=VLOOKUP(“x”,データ!A2:G16)
=VLOOKUP(“x”;データ!B2:G16;2;0)
それらの。 「理解できる」に翻訳すると、関数はデータシートの範囲 A2: G16 で文字「x」で始まる行を見つけ、この行の XNUMX 番目の列の内容、つまり支払い番号を提供する必要があります。
フォームの他のすべてのセルは同じ方法で入力されます。式の列番号のみが変更されます。
金額を言葉で表示するには、関数を使用しました 独自の PLEXアドオンから。
結果は次のようになります。
ステップ4. 「×」がXNUMXつにならないように…
ユーザーが複数の行に対して「x」を入力すると、VLOOKUP 関数は最初に見つかった値のみを取得します。 このようなあいまいさを避けるには、シート タブを右クリックします。 且つ その後 原文 (ソースコード). 表示される Visual Basic エディター ウィンドウで、次のコードをコピーします。
Private Sub Worksheet_Change(ByVal Target As Range) Dim r As Long Dim str As String If Target.Count > 1 Then Exit Sub If Target.Column = 1 Then str = Target.Value Application.EnableEvents = False r = Cells(Rows.Count , 2).End(xlUp).Row Range("A2:A" & r).ClearContents Target.Value = str End If Application.EnableEvents = True End Sub
このマクロは、ユーザーが最初の列に複数の「x」を入力できないようにします。
それだけです! 楽しみ!
- VLOOKUP 関数を使用して値を置き換える
- VLOOKUP関数の改良版
- PLEXアドオンからの単語数(Propis関数)