8

シート Sheet1 と Sheet2 を含む単一のワークシートがあり、Sheet2 から Sheet1 までのセル範囲を参照しようとしています

のようなワークシートのセルを参照する方法は知っていますが、試した=Sheet2!A1 ようなセル範囲に対して同じことを行うにはどうすればよいですか?A1:F1=Sheet2!A1:F1

可能であれば、これには Excel 数式を使用する必要があります。

4

8 に答える 8

7

単純 - -

4 つのセルを含むシート 2 と、数式を含む単一のセルを含むシート 1 を作成しました。

=SUM(Sheet2!B3:E3)

あなたが述べたように、Single Cellに範囲からの値を割り当てることは意味がないことに注意してください。範囲を使用して何かを行うフォーミュラに送信します。

于 2012-12-21T16:41:00.760 に答える
3

わかりました。カスタム連結関数をダウンロードして、そのセルを参照しました

コード

    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
于 2012-12-21T17:15:46.313 に答える
2

等しい数式を入れてからコピーして、範囲全体を参照することができます(1つのセルが1つのセルに入ります)

=Sheet2!A1

結果を連結する必要がある場合は、より長い式、またはユーザー定義関数 (つまりマクロ) が必要になります。

=Sheet2!A1&Sheet2!B1&Sheet2!C1&Sheet2!D1&Sheet2!E1&Sheet2!F1
于 2012-12-21T16:48:47.950 に答える
2

非常にシンプルですが、発見するのは簡単ではありません ---詳しくはこちらをご覧ください。マイクロソフトの公式サイトから

ステップ 1 - ソース シート (リンク先のデータを含む) のセルまたは範囲をクリックします。

ステップ 2Ctrl +を 押すCか、[ホーム] タブに移動し、[クリップボード] グループで [ボタン イメージのコピー] をクリックします。

ステップ 3Homeタブ のクリップボード グループ

ステップ 4Ctrl +を 押すVか、[ホーム] タブに移動し、[クリップボード] グループで [リンクの貼り付け] ボタンをクリックします。デフォルトでは、コピーしたデータを貼り付けると、[オプション ボタンの貼り付け] イメージ ボタンが表示されます。

ステップ 5 Paste Options ボタンをクリックし、次に Paste Link をクリックします。

于 2016-12-30T05:33:38.123 に答える
1

セルをループするのが気に入らなかったので、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を使用せずに手動で行う手順は次のとおりです。

  1. セルの数式を次のように更新します=Sheet2!A1:A15
  2. 打つF9
  3. 中括弧を削除します{ and }
  4. CONCATENATE(数式の先頭、=記号の後に置き、数式)の最後に置きます。
  5. ヒットenter
于 2012-12-21T17:51:33.720 に答える
1

これらのワークシートが同じワークブックにある場合、簡単な解決策は、範囲に名前を付けて、名前付き範囲を数式で参照させることです。範囲に名前を付けるには、それを選択して右クリックし、Workbook スコープで意味のある名前を付けます。

たとえば、次の=Sheet1!$A$1:$F$1ように名前を付けることができますtheNamedRange。次に、数式はSheet2!次のように数式で参照できます=SUM(theNamedRange)

ちなみに、範囲をどのように使用するつもりだったのか、あなたの質問からは明らかではありません。あなたが持っていたものを式に入れれば(例えば=SUM(Sheet1!A1:F1))、それはうまくいきます。その範囲引数を式に挿入するだけです。Excel は、関連する数式がないと範囲参照を解決しません。これは、その範囲参照で何をしたいのかがわからないためです。

2 つの方法のうち、名前付き範囲規則の方が扱いやすいことがわかりました。

于 2012-12-21T17:41:54.110 に答える