1

スプレッドシートを Excel 2007 から Mac Excel 2011 に変換しています。何時間も問題を解決しようとしましたが、成功しませんでした。

この UDF は範囲内の文字列を検索し、見つかったセルの 1 つ下のセルの値を返します。SET コマンドは、Mac バージョンでは何も返しませんが、Excel 2007 では機能します。

Function FindRng(Fnd As String)
Application.Volatile

Dim Rng As Range
If Fnd = "" Then
    FindRng = 0
    GoTo 109
End If
With Sheets("Matrix").Range("G2:FZ13")
         Set Rng = .Find(What:=Fnd, _
                After:=.Cells(2, 7), _
                LookIn:=xlValues, _
                LookAt:=xlWhole, _
                SearchOrder:=xlByRows, _
                SearchDirection:=xlNext, _
                MatchCase:=False)
    If Not Rng Is Nothing Then
        FindRng = Sheets("Matrix").Cells(Rng.Row + 1, Rng.Column).Value
    Else
        FindRng = 0
    End If
End With

109 End Function
4

1 に答える 1

6

2011 年のセルから呼び出された UDF では検索が機能しない (Office XP より前の PC バージョンに存在していた問題と同じ) ため、各セルをループしてテストする必要があります (配列へのデータの読み込みは、セルごとに読み取る) または、たとえば application.match を使用して一度に 1 行ずつ処理します。

于 2013-06-03T13:01:17.783 に答える