単一のエクセル式を書くのに何時間も費やしましたが、無駄です。私はちょうど代わりにVBAマクロを書くことに決めましたが、VBAの経験はほとんどなく、他の(似ていますが、かなり似ていません)答えを私のニーズに適応させるのに問題があります。VBA Excel - 文字列の検索、対応する値の合計、複数のシートにわたる変数の場所、変数の集計で小計を集計する
在庫の注文にはテンプレートブックがあり、各ページに小計があります。合計金額(各シートの小計の合計)を出力するために概要シートが必要です。簡単なテストワークブックが添付されています。これは、形式は次のとおりです。
Sheet1の
列[LOCATION1のUNKNOWN] |次の列
StringOfInterest 。 。 。 。 。 。 。 。 。 。 。 。 。 。 | Value_1
シート2
カラム[LOCATION2 UNKNOWN] |次の列
StringOfInterest 。 。 。 。 。 。 。 。 。 。 。 。 。 。 |値2
...
。
要約シート
列N |列N = 1
StringOfInterest | Value_1 + Value_2 + ... + Value_m
注:実際のシートの数は変更され、StringOfInterestは実際には1行2列幅のマージされたセルにあります。
制約: StringOfInterest "小計"とそれに対応する隣接列の値を含むセルは、各シート間の任意の場所にあります。 "小計"文字列は、実際には1つのセルにマージされた2つの隣接する列セルに配置されます。 (1)必要に応じて新しいシートを追加する、(2)要約シートに目的の合計を入力することを除いて、シート自体を編集することはできません。 これは、新しい在庫シートの追加、古い在庫シートの削除、シート名の変更、および任意のシート上の小計の位置の変更に対して堅牢である必要があります。
文字列 "小計"をすべてのシートに一致させ、マッチした各セルを1つの列(おそらく2つ、Excelがマージされたセルを処理する方法に応じて2つ)分オフセットし、それらの値を合計します。
私はSUM(IF())、SUMIF()、SUMIFS()、SUMPRODUCT()、INDIRECT()、MATCH()、VLOOKUP()、OFFSET()などのさまざまな組み合わせを使用しようとしました。 。無駄に。現時点では、上司にこの計算を実行するマクロを与えて、要約ページの定義されたセルに合計を出力するだけで構いません。
私は必要なものを明示的に示す簡単なワークブックを用意しました。Summaryという名前のシート7には、関心のある文字列名のセルと、合計を出力する場所があります。必要に応じて、この単純なワークブックでは、セルを検索文字列と同じにすることを避けるために、[サマリー]ページを変更することができます(たとえば、 "小計"の代わりに "小計サマリー" ...または "こんにちは"の代わりに " )、プレースホルダのページを追加することもできます(ただし、毎回強制的に編集することなく、上記の潜在的な変更に対応できる必要があります)
ありがとうございました!
(注意:Office 365のためにExcelを使用)
EDIT:シートをGoogleにアップロードされたファイルスタックオーバーフローは、添付ファイルをサポートしていませんので、:https://docs.google.com/spreadsheets/d/1RGpQ-4KSYYuwbpWGb0DPAI6qhxLQ0d4CqLwW2gOns2A/edit?usp=sharing
はい:私はにより、手動(「ハロー合計」に「こんにちは」からページ7のrow2col1上のエントリを変更した後)は、ページ7の私の「合計」欄に結果を挿入することを決めました。私の主なコードでは、 'SUM(OFFSET(INDEX(FirstPageName:LastPageName!1:1048576、MATCH(" Subtotal "、1:1048576,0))、0,1,1,1))';結果はVALUEエラーです。「エラートレーサには、既存の矢印または循環参照があります。すべてのトレーサ矢印を削除するか、循環参照を解決してから、再度トレースエラーを選択してください。 –
あなたは次のようなものを試すことができます:https://www.rondebruin.nl/win/s9/win006.htm –
素晴らしい!どうもありがとうございます!!もしVBAスーパーnoobがこれを見つけたら、Dim文の前に 'Public Sub Arbitrary_Name_Of_Macro()'で始まり、最後の行に 'End Sub'で終わることを忘れないでください。私は手動でページ7のrow2col1の項目を "hello"から "hello total"に変更した後に、ページ7の "Total"列に結果を手動で挿入することにしました: 'Dim iRow As Integer、iCol As Integer ... iRow = 2 iCol = 2 セル(iRow、iCol)。値= myArr_Tot' –