次の状況があります。リストAに2つの列(名前、金額)があり、リストB(名前)に、リストBと同じ名前のリストAのすべてのエントリの合計である計算列を追加したい例:
リストA:
NAME Amount
L0011 100
L0011 50
L0020 234
したがって、リストBでは、計算列に次のように表示します。
NAME Amount
L0011 150
L0020 234
これはどのように行うことができますか?ワークフロー(リストAのエントリを追加/変更し、リストBを更新するとすぐに)または他の何か?ありがとう
計算列は同じリストの列にのみ使用できるため、計算列を使用してこれを行うことはできません。
SharePoint Designerワークフローを使用すると、Create List Item
およびUpdate List Item
アクションを使用するだけで、ユーザーがL0011の値を追加するたびに、以前の金額が既に含まれている別のリストの列に金額が追加されます。
SharePointアプローチについてより詳細な回答が必要な場合はお知らせください。手順を追って、何をすべきかを説明します。
lem.mallariの答えは、リストAの金額が変更されないと想定できない限り、非常に苦痛です。これは、アイテムがすでに合計に追加されているかどうかを追跡していないためです。ワークフローがSharePointリストを反復処理する方法はありません。つまり、複数のリストアイテムの合計または平均を計算する簡単な方法はありません。
これを実装する正しい方法には、いくつかの開発が必要になります。 SharePoint開発者トレーニング( 201 、 201 )は、実際にほとんどの方法を取得します。リストAおよびBでアイテムが追加または変更されたときに、イベントレシーバーがトリガーする必要があります。 SharePointのAPIを使用して、リストAと名前による平均値を調べ、リストBのすべての(または影響を受けた)アイテムを更新します。または、JavaScriptを使用して、リストAのすべてのエントリの合計を表示することもできます。すべてのデータがページに表示されている限り、リストBのアイテム。 XPathとInfoPathが便利な場合は、リストAをセカンダリデータソースとしてリストBのフォームに追加し、リストAの該当するアイテムのみを選択して合計することができます。
しかし、ワークフローについて話している場合は、これが「ワークフローのみ」の方法です。これは2010年にテストされ、成功しました。次の列を使用してカスタムリストCを作成します。
リストAおよびBの[名前]列を、リストCを指すルックアップ列に置き換えます。追加の列として[合計]列を含める代わりに、リストBの[金額]列を削除します。次の列をリストAに追加し、ユーザーがそれらを直接変更できないようにします。これは、InfoPathフォームを作成するか、別の表示および編集フォームを作成することで制限できます。
リストAでアイテムが作成または変更されるたびに実行するワークフローを作成します。次のコマンドを使用します(読みやすくするためにリストを使用しています。コードとしてフォーマットすると見苦しくなりました)。
DSum関数の使用はどうですか? https://support.office.com/en-us/article/DSum-Function-08F8450E-3BF6-45E2-936F-386056E61A32
リストB
NAME Amount
L0011 =DSum("[Amount]","List A","[NAME]=''" & [NAME] & "'")
L0020 =DSum("[Amount]","List A","[NAME]=''" & [NAME] & "'")