シート Sheet1 と Sheet2 を含む単一のワークシートがあり、Sheet2 から Sheet1 までのセル範囲を参照しようとしています
のようなワークシートのセルを参照する方法は知っていますが、試した=Sheet2!A1
ようなセル範囲に対して同じことを行うにはどうすればよいですか?A1:F1
=Sheet2!A1:F1
可能であれば、これには Excel 数式を使用する必要があります。
シート Sheet1 と Sheet2 を含む単一のワークシートがあり、Sheet2 から Sheet1 までのセル範囲を参照しようとしています
のようなワークシートのセルを参照する方法は知っていますが、試した=Sheet2!A1
ようなセル範囲に対して同じことを行うにはどうすればよいですか?A1:F1
=Sheet2!A1:F1
可能であれば、これには Excel 数式を使用する必要があります。
単純 - -
4 つのセルを含むシート 2 と、数式を含む単一のセルを含むシート 1 を作成しました。
=SUM(Sheet2!B3:E3)
あなたが述べたように、Single Cellに範囲からの値を割り当てることは意味がないことに注意してください。範囲を使用して何かを行うフォーミュラに送信します。
わかりました。カスタム連結関数をダウンロードして、そのセルを参照しました
コード
Function concat(useThis As Range, Optional delim As String) As String
' this function will concatenate a range of cells and return one string
' useful when you have a rather large range of cells that you need to add up
Dim retVal, dlm As String
retVal = ""
If delim = Null Then
dlm = ""
Else
dlm = delim
End If
For Each cell In useThis
if cstr(cell.value)<>"" and cstr(cell.value)<>" " then
retVal = retVal & cstr(cell.Value) & dlm
end if
Next
If dlm <> "" Then
retVal = Left(retVal, Len(retVal) - Len(dlm))
End If
concat = retVal
End Function
等しい数式を入れてからコピーして、範囲全体を参照することができます(1つのセルが1つのセルに入ります)
=Sheet2!A1
結果を連結する必要がある場合は、より長い式、またはユーザー定義関数 (つまりマクロ) が必要になります。
=Sheet2!A1&Sheet2!B1&Sheet2!C1&Sheet2!D1&Sheet2!E1&Sheet2!F1
非常にシンプルですが、発見するのは簡単ではありません ---詳しくはこちらをご覧ください。マイクロソフトの公式サイトから
ステップ 1 - ソース シート (リンク先のデータを含む) のセルまたは範囲をクリックします。
ステップ 2Ctrl +を 押すCか、[ホーム] タブに移動し、[クリップボード] グループで [ボタン イメージのコピー] をクリックします。
ステップ 3Home
タブ
のクリップボード グループ
ステップ 4Ctrl +を 押すVか、[ホーム] タブに移動し、[クリップボード] グループで [リンクの貼り付け] ボタンをクリックします。デフォルトでは、コピーしたデータを貼り付けると、[オプション ボタンの貼り付け] イメージ ボタンが表示されます。
ステップ 5 Paste Options ボタンをクリックし、次に Paste Link をクリックします。
セルをループするのが気に入らなかったので、Ninja2k によって提供されたコードを書き直しました。今後の参考のために、代わりに配列を使用したバージョンを次に示します。これは、多くの範囲で著しく高速に動作しますが、同じ結果になります。
Function concat2(useThis As Range, Optional delim As String) As String
Dim tempValues
Dim tempString
Dim numValues As Long
Dim i As Long, j As Long
tempValues = useThis
numValues = UBound(tempValues) * UBound(tempValues, 2)
ReDim values(1 To numValues)
For i = UBound(tempValues) To LBound(tempValues) Step -1
For j = UBound(tempValues, 2) To LBound(tempValues, 2) Step -1
values(numValues) = tempValues(i, j)
numValues = numValues - 1
Next j
Next i
concat2 = Join(values, delim)
End Function
もっと良い方法があると思わずにはいられません...
1次元配列でのみ動作し、参照を保持する代わりに静的な値を作成するVBAを使用せずに手動で行う手順は次のとおりです。
=Sheet2!A1:A15
{ and }
CONCATENATE(
数式の先頭、=
記号の後に置き、数式)
の最後に置きます。これらのワークシートが同じワークブックにある場合、簡単な解決策は、範囲に名前を付けて、名前付き範囲を数式で参照させることです。範囲に名前を付けるには、それを選択して右クリックし、Workbook スコープで意味のある名前を付けます。
たとえば、次の=Sheet1!$A$1:$F$1
ように名前を付けることができますtheNamedRange
。次に、数式はSheet2!
次のように数式で参照できます=SUM(theNamedRange)
。
ちなみに、範囲をどのように使用するつもりだったのか、あなたの質問からは明らかではありません。あなたが持っていたものを式に入れれば(例えば=SUM(Sheet1!A1:F1)
)、それはうまくいきます。その範囲引数を式に挿入するだけです。Excel は、関連する数式がないと範囲参照を解決しません。これは、その範囲参照で何をしたいのかがわからないためです。
2 つの方法のうち、名前付き範囲規則の方が扱いやすいことがわかりました。