0

Noodles からの回答のおかげで、UDF が Excel ワークブックの遅延の主な原因であることがわかりました。この UDF を書き直して、ラグが発生しないようにすることはできますか? この UDF を Excel 式で使用しています (例 =IF(OR(ISNUMBER($DH2),$DH2>" "),LookUpConcat($B2,Usage!$AM$2:$AM$5000,Usage!$AS$2: $AS$5000、" ")、" "))。たぶん、式を変更する必要があります。数式は多くのセルから引き出され、ワー​​クブックの 2 つの異なる列で機能するように調整されます。私はITではないので、最後のラグの質問に対するNoodlesの回答は完全には理解できませんでしたが、これが最もラグの問題を引き起こしているマクロであることを知るのに十分な情報を提供してくれました.

   Function LookUpConcat(ByVal SearchString As String, SearchRange As Range, ReturnRange As Range, _
                       Optional Delimiter As String = " ", Optional MatchWhole As Boolean = True, _
                       Optional UniqueOnly As Boolean = False, Optional MatchCase As Boolean = False)



     Dim X As Long, CellVal As String, ReturnVal As String, Result As String

     If (SearchRange.Rows.Count > 1 And SearchRange.Columns.Count > 1) Or _
    (ReturnRange.Rows.Count > 1 And ReturnRange.Columns.Count > 1) Then
   LookUpConcat = CVErr(xlErrRef)
 Else
  If Not MatchCase Then SearchString = UCase(SearchString)
   For X = 1 To SearchRange.Count
     If MatchCase Then
    CellVal = SearchRange(X).Value
    Else
    CellVal = UCase(SearchRange(X).Value)
      End If
     ReturnVal = ReturnRange(X).Value
      If MatchWhole And CellVal = SearchString Then
       If UniqueOnly And InStr(Result & Delimiter, Delimiter & ReturnVal & Delimiter) > 0 Then GoTo     Continue
       Result = Result & Delimiter & ReturnVal
     ElseIf Not MatchWhole And CellVal Like "*" & SearchString & "*" Then
       If UniqueOnly And InStr(Result & Delimiter, Delimiter & ReturnVal & Delimiter) > 0 Then GoTo     Continue
    Result = Result & Delimiter & ReturnVal
  End If
Continue:
Next
   LookUpConcat = Mid(Result, Len(Delimiter) + 1)
 End If

終了機能

4

1 に答える 1