2017-11-30 10 views
0

現在、ユーザーの定義した関数に渡して、引数としてセルの内容を上げようとしています。は、範囲の引数としてudfにセルの内容を渡します。

つまり、私はこのセル "sheet1!X17:X37"のようなものを得るセルに興味がある範囲を計算します。

今、私はこのセル(例:A1)をudfに渡したいと思います。たとえば、私は「= MyFunctionを(!Sheet1のX17:X37)とは対照的に "= MyFunctionを(A1)" を持つようにB1にしたい。?

任意のアイデア

My機能は、このようなものです:

Public Function ConcatItNoDuplicities(ByVal cellsToConcat As Range) As String 
    ConcatItNoDuplicities = "" 
    If cellsToConcat Is Nothing Then Exit Function 
    Dim oneCell As Range 
    Dim result As String 
    For Each oneCell In cellsToConcat.Cells 
     Dim cellValue As String 
     cellValue = Trim(oneCell.Value) 
     If cellValue <> "" Then 
      If InStr(1, result, cellValue, vbTextCompare) = 0 Then _ 
       result = result & cellValue & "," 
     End If 
    Next oneCell 
    If Len(result) > 0 Then _ 
     result = Left(result, Len(result) - 1) 
    ConcatItNoDuplicities = result 
End Function 
間接的

ベスト T

+0

をしないのですが、一つのセルの連結はありません、ちょうどそのセルのですか?これは '= A1'と同じではないでしょう –

+0

実際には、A1に連結したい範囲が含まれています。私はA1の内容ではなくA1の内容を引数として使用したいと思います。 –

答えて

0

用途:

=ConcatItNoDuplicities(INDIRECT(A1)) 
+0

多くの感謝!それはとても簡単でした...私はそれに費やした時間を信じられません。 –

+0

@theodorcarp答えのチェックマークをクリックして、正しいとマークしてください。 –

0

別のアプローチ。

セイA1には、セルブロックアドレスのように見えるテキストが含まれています。この小さなUDF()は、ターゲットの簡単な連結ん:うーん...多分私は何かを

Public Function TakeOneStepBeyond(rng1 As Range) As String 
    Dim rng2 As Range, r As Range 

    Set rng2 = Range(rng1.Value) 

    TakeOneStepBeyond = "" 
    For Each r In rng2 
     TakeOneStepBeyond = TakeOneStepBeyond & r.Value 
    Next r 
End Function 

enter image description here

関連する問題