ªð¦^¦Cªí ¤W¤@¥DÃD µo©«

[µo°Ý] replace missing value (¨D±Ï)

¦^´_ 1# jj369963

CP2=SUM(I2,K2,X2,AC2,AF2,AR2,AV2,AZ2)/COUNT(I2,K2,X2,AC2,AF2,AR2,AV2,AZ2)*5/3
¥H¦¹Ãþ±À
¾Ç®üµL²P_¤£®¢¤U°Ý

TOP

¦^´_ 5# jj369963
°ò¥»¤W¦]¬°CP:CUÄæ¦ìªº¤½¦¡°Ñ·Ó¨ìF:COÄæ¦ì
­n¦bF:COÄ檺ªÅ®æ¤º¶ñ¤JCP:CU©Ò±oªº­È¡A¥u¯à¹ï·Ó«á¶ñ¤J¼Æ­È
¤£¥i¥H§Q¥Î¤½¦¡¶ñ¤JªÅ®æ¤º¡A¦]¬°³o·|³y¦¨´`Àô°Ñ·Ó
§Q¥ÎVBAÀ°§U§A¶ñ¤J¼Æ­È¤~¥i¹F¦¨
  1. Sub ex()
  2. Dim Rng As Range, A As Range, C As Range
  3. r = 2
  4. Do Until Cells(r, 1) = ""
  5.   Set Rng = Cells(r, 6).Resize(, 88)
  6.   If Application.CountA(Rng) < Rng.Count Then
  7.   For Each A In Rng.SpecialCells(xlCellTypeBlanks)
  8.       For Each C In Range(Cells(r, "CP"), Cells(r, "CU"))
  9.           If InStr(C.Formula, A.Address(0, 0)) > 0 Then
  10.              A.Value = Round(C, 0)
  11.           End If
  12.       Next
  13.   Next
  14.   End If
  15. r = r + 1
  16. Loop
  17. End Sub
½Æ»s¥N½X
¾Ç®üµL²P_¤£®¢¤U°Ý

TOP

¦^´_ 8# jj369963

VBAªº§@¥Î¥²¶·CP:CUÄæ¦ì³£¦³¿é¤J¤½¦¡
ªÅ®æ¤~·|¹ïÀ³¸Ó¦Cªº¤½¦¡°Ñ·Ó¶ñ¤J
¾Ç®üµL²P_¤£®¢¤U°Ý

TOP

¦^´_ 10# jj369963

³oÀɮתºªÅ®æ¹ê¦b§ä¤£¥X¨ì©³ÁôÂìƻò¬Ý¤£¨£ªº¦r¤¸¡A©Ò¥H­Y¨Ï¥ÎApplication.Counta¨ç¼Æ¥hºâ¼Æ¶q·|§ä¤£¨ìªÅ®æ
¥u¦n¨C®æ¥hÀˬd
¦A«h¸ê®Æ°Ï°ì§ïÅÜ¡AÅܼƥ綷§ïÅÜ
§â±b±KÀÉ®×»PEXCELÀÉ©ñ¦b¦P¤@¥Ø¿ý¡A¸Õ¸Õ
  1. Sub ex()
  2. Dim Rng As Range, A As Range, C As Range
  3. Set dic = CreateObject("Scripting.Dictionary")
  4. fs = ThisWorkbook.Path & "\replace_rule.txt"
  5. Close #1

  6. Open fs For Input As #1
  7. Do Until EOF(1)
  8.   Line Input #1, mystr
  9.   If InStr(mystr, "=") > 0 Then
  10.   n = Application.Match(Trim(Split(mystr, "=")(0)), Rows(1), 0)
  11.   x = Split(Replace(Replace(Replace(Replace(Split(mystr, "=")(1), "MEAN(", ""), ")", ""), ".", ""), " ", ""), ",")
  12.   For Each ky In x
  13.     dic(Trim(ky)) = n
  14.   Next
  15.   End If
  16. Loop
  17. Close #1
  18. r = 2
  19. Do Until Cells(r, 1) = ""
  20.   Set Rng = Cells(r, 8).Resize(, 88) '¦]¬°±qHÄæ¶}©l§äªÅ®æ¡A©Ò¥H§ï¬°Cells(r, 8)
  21.   For Each A In Rng
  22.   If A = "" Then
  23.   k = A.Column
  24.   v = Trim(Cells(1, k).Value)
  25.   s = dic(v)
  26.   A = Cells(r, s)
  27.   End If
  28.   Next
  29. r = r + 1
  30. Loop
  31. End Sub
½Æ»s¥N½X
¾Ç®üµL²P_¤£®¢¤U°Ý

TOP

¦^´_ 12# jj369963


    §ä¤£¨ìÀɮתº°T®§¡A¥i¯à¬OTXTÀÉ»P¸ÓEXCELÀɮרS¦³©ñ¦b¦P¤@­Ó¸ê®Æ§¨¤º
¦]¬°§Ú´ú¸Õ®É¨ÃµL¦¹±¡ªpµo¥Í¡A¥u¬Oµo²{­Y¸ÓªÅ®æªº°Ñ·Ó¨Ã¥¼³Q¥k°¼¤½¦¡©Ò¤Þ¥Î®É´N·|¥X¿ù
¸Õ¸Õ¥H¤Uµ{¦¡½X¬Ý¬Ý
  1. Sub ex()
  2. Dim Rng As Range, A As Range, C As Range
  3. Set dic = CreateObject("Scripting.Dictionary")
  4. Set dic1 = CreateObject("Scripting.Dictionary")

  5. fs = ThisWorkbook.Path & "\replace_rule.txt"
  6. Close #1

  7. Open fs For Input As #1
  8. Do Until EOF(1)
  9.   Line Input #1, mystr
  10.   If InStr(mystr, "=") > 0 Then
  11.   n = Application.Match(Trim(Split(mystr, "=")(0)), Rows(1), 0)
  12.   x = Split(Replace(Replace(Replace(Replace(Split(mystr, "=")(1), "MEAN(", ""), ")", ""), ".", ""), " ", ""), ",")
  13.   For Each ky In x
  14.     dic(Trim(ky)) = n
  15.   Next
  16.   End If
  17. Loop
  18. Close #1
  19. With Sheet2
  20. For Each A In .Range(.[A2], .[A2].End(xlDown))
  21.    dic1(A.Value) = Array(A.Offset(, 2).Value, A.Offset(, 3).Value) '¬ö¿ý±b±K
  22. Next
  23. End With
  24. r = 2
  25. With Sheets("Sheet0")
  26. Do Until .Cells(r, 1) = ""
  27. .Cells(r, 1).Resize(, 2) = dic1(.Cells(r, 6).Value) '¶ñ¤J±b±K
  28.   Set Rng = .Cells(r, 8).Resize(, 88) '¦]¬°±qHÄæ¶}©l§äªÅ®æ¡A©Ò¥H§ï¬°.Cells(r, 8)
  29.   For Each A In Rng
  30.   If A = "" Then
  31.   k = A.Column
  32.   v = Trim(.Cells(1, k).Value)
  33.   s = dic(v)
  34.   If s <> "" Then A = Round(.Cells(r, s), 0) Else: A = "µL¤Þ¥Î" '¦pªGªÅ®æ¦³³Q¤½¦¡°Ñ·Ó«h¶ñ¤J¼Æ­È¡AµL«h¶ñ¤J"µL¤Þ¥Î"¦r¦ê
  35.   End If
  36.   Next
  37. r = r + 1
  38. Loop
  39. End With
  40. End Sub
½Æ»s¥N½X
¾Ç®üµL²P_¤£®¢¤U°Ý

TOP

¦^´_ 16# jj369963

¸Õ¸Õ¬Ý
  1. Sub Replace_Blank()
  2. Dim A As Range, Ar(), B As Range
  3. Set Upw = CreateObject("Scripting.Dictionary") '±b±K
  4. Set dic = CreateObject("Scripting.Dictionary") '±b±K
  5. fs = ThisWorkbook.Path & "\replace_rule.txt" 'TEXTÀɮצì¸m
  6. Close #1 '­Y¤w¸g¶}±Ò´N¥ýÃö³¬
  7. With Sheet1
  8. Open fs For Input As #1
  9. Do Until EOF(1)
  10.    Line Input #1, mystr
  11.    If InStr(mystr, ",") > 0 Then
  12.    s = InStr(mystr, "(")
  13.    n = InStr(s, mystr, ")")
  14.    mystr = Mid(mystr, s + 1, n - s - 1)
  15.    For Each C In Split(mystr, ",")
  16.      Set A = .Rows(1).Find(C)
  17.      ReDim Preserve Ar(i)
  18.      Ar(i) = Split(A.Address, "$")(1)
  19.      i = i + 1
  20.    Next
  21.    For Each p In Ar
  22.       dic(p) = Ar '°O¿ý¤½¦¡°Ñ·ÓÄæ¦ì
  23.    Next
  24.    Erase Ar: i = 0
  25.    End If
  26. Loop
  27. Close #1
  28. With ¤u§@ªí1
  29.   For Each A In .Range(.[A2], .[A2].End(xlDown))
  30.      Upw(CStr(A)) = Array(A.Offset(, 3).Value, A.Offset(, 2).Value) '°O¿ý±b±K
  31.   Next
  32. End With
  33. '¨ú¥N½Æ¿ï¦ì¸m
  34. Set A = .Range(.[H2], .Cells(.Rows.Count, "CQ").End(xlUp)).Find("*,*")
  35. If Not A Is Nothing Then
  36. Do
  37. ay = Split(A, ",")
  38. For i = 0 To UBound(ay)
  39. ReDim Preserve Ar(i)
  40. Ar(i) = CInt(ay(i))
  41. Next
  42.   A.Value = Round(Application.Average(Ar), 0)
  43.   Erase Ar
  44.   Set A = .Range(.[H2], .Cells(.Rows.Count, "CQ").End(xlUp)).Find("*,*", A)
  45. Loop Until A Is Nothing
  46. End If
  47. i = 0
  48. .Select
  49. For Each A In .Range(.[F2], .Cells(.Rows.Count, "F").End(xlUp))
  50.    A.Offset(, -5).Resize(, 2) = Upw(CStr(A)) '¶ñ¼g±b±K
  51.    r = A.Row
  52.    For Each B In .Range(.Cells(r, "H"), .Cells(r, "CQ"))
  53.       If B = "" Then  '§ä¨ìªÅ®æ
  54.       ay = dic(Split(B.Address, "$")(1))
  55.       If Not IsEmpty(ay) Then '¸ÓÀx¦s®æ¦³³Q¤½¦¡¤Þ¥Î
  56.          For i = 0 To UBound(ay)
  57.            ReDim Preserve Ar(i)
  58.            Ar(i) = ay(i) & r
  59.          Next
  60.         If Application.Count(.Range(Join(Ar, ","))) > 0 Then B.Value = Round(Application.Evaluate("Average(" & Join(Ar, ",") & ")*5/3"), 0)
  61.          Erase Ar
  62.       End If
  63.       End If
  64.     Next
  65. Next
  66. End With
  67. End Sub
½Æ»s¥N½X
¾Ç®üµL²P_¤£®¢¤U°Ý

TOP

¦^´_ 18# jj369963

¤£À´§A©Ò»¡
¥t¥~ ¡@ ®M¤J¨ú¥Nmissing ªº R¡@I¡@¢Ï¡@S¡@¢Ó¡@C¬O¤£­n*5/3¦ý¥|±Ë¤­¤J¡A
                  ¦ÓCRÄæ¨ìCWÄæ ªº  R¡@I¡@¢Ï¡@S¡@¢Ó¡@C¡@¬O­n­¼¥H5/3
  µ{¦¡½X°õ¦æ¤w¸g¤£»Ý­n¦³CR:DCÄæ¦ìªº¤½¦¡¡A§AÅçºâ¬Ý¬Ý®t²§¦b­þ?
  1. Sub Replace_Blank()
  2. Dim A As Range, Ar(), B As Range
  3. Set Upw = CreateObject("Scripting.Dictionary") '±b±K
  4. Set dic = CreateObject("Scripting.Dictionary") '°Ñ·Ó
  5. fs = ThisWorkbook.Path & "\replace_rule.txt" 'TEXTÀɮצì¸m
  6. Close #1 '­Y¤w¸g¶}±Ò´N¥ýÃö³¬
  7. With Sheets("Sheet0")
  8. Open fs For Input As #1
  9. Do Until EOF(1)
  10.    Line Input #1, mystr
  11.    If InStr(mystr, ",") > 0 Then
  12.    s = InStr(mystr, "(")
  13.    n = InStr(s, mystr, ")")
  14.    mystr = Mid(mystr, s + 1, n - s - 1)
  15.    For Each C In Split(mystr, ",")
  16.      Set A = .Rows(1).Find(C)
  17.      ReDim Preserve Ar(i)
  18.      Ar(i) = Split(A.Address, "$")(1)
  19.      i = i + 1
  20.    Next
  21.    For Each p In Ar
  22.       dic(p) = Ar '°O¿ý¤½¦¡°Ñ·ÓÄæ¦ì
  23.    Next
  24.    Erase Ar: i = 0
  25.    End If
  26. Loop
  27. Close #1
  28. With Sheets("Sheet1")
  29.   For Each A In .Range(.[A2], .[A2].End(xlDown))
  30.      Upw(CStr(A)) = Array(A.Offset(, 3).Value, A.Offset(, 2).Value) '°O¿ý±b±K
  31.   Next
  32. End With
  33. '¨ú¥N½Æ¿ï¦ì¸m
  34. Set A = .Range(.[H2], .Cells(.Rows.Count, "CQ").End(xlUp)).Find("*,*")
  35. If Not A Is Nothing Then
  36. Do
  37. ay = Split(A, ",")
  38. For i = 0 To UBound(ay)
  39. ReDim Preserve Ar(i)
  40. Ar(i) = Val(ay(i))
  41. Next
  42.   A.Value = Round(Application.Average(Ar), 0)
  43.   Erase Ar
  44.   Set A = .Range(.[H2], .Cells(.Rows.Count, "CQ").End(xlUp)).Find("*,*", A)
  45. Loop Until A Is Nothing
  46. End If
  47. i = 0
  48. .Select
  49. For Each A In .Range(.[F2], .Cells(.Rows.Count, "F").End(xlUp))
  50.    A.Offset(, -5).Resize(, 2) = Upw(CStr(A)) '¶ñ¼g±b±K
  51.    r = A.Row
  52.    For Each B In .Range(.Cells(r, "H"), .Cells(r, "CQ"))
  53.       If B = "" Then  '§ä¨ìªÅ®æ
  54.       ay = dic(Split(B.Address, "$")(1))
  55.       If Not IsEmpty(ay) Then '¸ÓÀx¦s®æ¦³³Q¤½¦¡¤Þ¥Î
  56.          For i = 0 To UBound(ay)
  57.            ReDim Preserve Ar(i)
  58.            Ar(i) = ay(i) & r
  59.          Next
  60.         If Application.Count(.Range(Join(Ar, ","))) > 0 Then B.Value = Round(Application.Evaluate("Average(" & Join(Ar, ",") & ")*5/3"), 0)
  61.          Erase Ar
  62.       End If
  63.       End If
  64.     Next
  65. Next
  66. End With
  67. End Sub
½Æ»s¥N½X
¾Ç®üµL²P_¤£®¢¤U°Ý

TOP

¦^´_ 20# jj369963
©Ò¥H¨Ã¤£»Ý­n*5/3¶Ü?
  1. Sub Replace_Blank()
  2. Dim A As Range, Ar(), B As Range
  3. Set Upw = CreateObject("Scripting.Dictionary") '±b±K
  4. Set dic = CreateObject("Scripting.Dictionary") '°Ñ·Ó
  5. fs = ThisWorkbook.Path & "\replace_rule.txt" 'TEXTÀɮצì¸m
  6. Close #1 '­Y¤w¸g¶}±Ò´N¥ýÃö³¬
  7. With Sheets("Sheet0")
  8. Open fs For Input As #1
  9. Do Until EOF(1)
  10.    Line Input #1, mystr
  11.    If InStr(mystr, ",") > 0 Then
  12.    s = InStr(mystr, "(")
  13.    n = InStr(s, mystr, ")")
  14.    mystr = Mid(mystr, s + 1, n - s - 1)
  15.    For Each C In Split(mystr, ",")
  16.      Set A = .Rows(1).Find(C)
  17.      ReDim Preserve Ar(i)
  18.      Ar(i) = Split(A.Address, "$")(1)
  19.      i = i + 1
  20.    Next
  21.    For Each p In Ar
  22.       dic(p) = Ar '°O¿ý¤½¦¡°Ñ·ÓÄæ¦ì
  23.    Next
  24.    Erase Ar: i = 0
  25.    End If
  26. Loop
  27. Close #1
  28. With Sheets("Sheet1")
  29.   For Each A In .Range(.[A2], .[A2].End(xlDown))
  30.      Upw(CStr(A)) = Array(A.Offset(, 3).Value, A.Offset(, 2).Value) '°O¿ý±b±K
  31.   Next
  32. End With
  33. '¨ú¥N½Æ¿ï¦ì¸m
  34. Set A = .Range(.[H2], .Cells(.Rows.Count, "CQ").End(xlUp)).Find("*,*")
  35. If Not A Is Nothing Then
  36. Do
  37. ay = Split(A, ",")
  38. For i = 0 To UBound(ay)
  39. ReDim Preserve Ar(i)
  40. Ar(i) = Val(ay(i))
  41. Next
  42.   A.Value = Round(Application.Average(Ar), 0)
  43.   Erase Ar
  44.   Set A = .Range(.[H2], .Cells(.Rows.Count, "CQ").End(xlUp)).Find("*,*", A)
  45. Loop Until A Is Nothing
  46. End If
  47. i = 0
  48. .Select
  49. For Each A In .Range(.[F2], .Cells(.Rows.Count, "F").End(xlUp))
  50.    A.Offset(, -5).Resize(, 2) = Upw(CStr(A)) '¶ñ¼g±b±K
  51.    r = A.Row
  52.    For Each B In .Range(.Cells(r, "H"), .Cells(r, "CQ"))
  53.       If B = "" Then  '§ä¨ìªÅ®æ
  54.       ay = dic(Split(B.Address, "$")(1))
  55.       If Not IsEmpty(ay) Then '¸ÓÀx¦s®æ¦³³Q¤½¦¡¤Þ¥Î
  56.          For i = 0 To UBound(ay)
  57.          If .Range(ay(i) & r) <> "" Then '¤Þ¥Îªº°Ñ·Ó«DªÅ¥Õ¤~­p¤J°}¦C
  58.            ReDim Preserve Ar(j)
  59.            Ar(j) = ay(i) & r
  60.            j = j + 1
  61.          End If
  62.          Next
  63.         If j > 0 Then B.Value = Round(Application.Evaluate("Average(" & Join(Ar, ",") & ")"), 0)
  64.          Erase Ar
  65.          j = 0
  66.       End If
  67.       End If
  68.     Next
  69. Next
  70. End With
  71. End Sub
½Æ»s¥N½X
¾Ç®üµL²P_¤£®¢¤U°Ý

TOP

¦^´_ 25# jj369963
  1. With [H:BC] '1~48ÃDªºÄæ¦ì
  2. .Replace 1, "3@", xlWhole '±N1¥Î¤@­Ó¤£±`¥Î²Å¸¹¨ú¥N
  3. .Replace 2, 1, xlWhole '±N2¥Î1¨ú¥N
  4. .Replace 3, 2, xlWhole '±N3¥Î2¨ú¥N
  5. .Replace "3@", 3, xlWhole '±N¤£±`¥Î²Å¸¹¥Î3¨ú¥N
  6. End With
½Æ»s¥N½X
¾Ç®üµL²P_¤£®¢¤U°Ý

TOP

¦^´_ 27# jj369963
¾ã­Ó¸ê®Æ¥þ³¡³B²z§¹«á¡AÁÙ¬O¦³missing(¦]¬°µL¤½¦¡¥i¥H¹ïÀ³¨ú¥N)¡A©Ò¥H¬O§_¥i¥H
   ¦bA-CQÄæ ·j´Mmissing ¡A¨Ã±N¾ã¦C¼Ð°OÃC¦â(¶À¦â)¡AÁ|¨Ò¦pªGA15¬°ªÅ­È¡A´N±N²Ä15¦C¥þ³¡¼ÐÃC¦â¡A¨Ì¦¹Ãþ±À

¼ÐÃC¦â¥Î®æ¦¡¤Æ±ø¥ó§Y¥i¹F¦¨
=(COUNTBLANK($A1:$CQ1)>0)*(COUNTA($A1:$CQ1)>0)
¾Ç®üµL²P_¤£®¢¤U°Ý

TOP

        ÀR«ä¦Û¦b : ¡i®É¶¡¦pÆp¥Û¡j®É¶¡¹ï¤@­Ó¦³´¼¼zªº¤H¦Ó¨¥¡A´N¦pÆp¥Û¯ë¬Ã¶Q¡F¦ý¹ï·M¤H¨Ó»¡¡A«o¹³¬O¤@§âªd¤g¡A¤@ÂI»ù­È¤]¨S¦³¡C
ªð¦^¦Cªí ¤W¤@¥DÃD