snasui.com ยินดีต้อนรับ ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ ระบุ Version ของ Excel
ถ้าจะดึงข้อมูลที่ sheet data ที่ column C โดยดูที่list drop down ที่ขึ้ต้องด้วย เลขใน list ด้วย vba ต้องปรับ code อย่างไรคะ เพราะ data มาแต่ละวันเพิ่มขึ้นลดลงค่ะ
Ex : เลือก drop down ที่ cell S3 เป็น 4 ก็ให้ code vba ดึงตัวเลขที่ขึ้นต้องด้วยเลข 4 ที่ sheet data มาไว้ที่ sheet นี้ แล้วตรง column c ให้เปลี่ยนเป็นตัวเลข ไม่ให้ใช้ text เพราะต้องเอาข้อมูลไปใช้ต่อ
เลือก drop down ที่ cell S3 เป็น 5 ก็ให้ code vba ดึงตัวเลขที่ขึ้นต้องด้วยเลข 5 ที่ sheet data มาไว้ที่ sheet นี้ แล้วตรง column c ให้เปลี่ยนเป็นตัวเลข ไม่ให้ใช้ text เพราะต้องเอาข้อมูลไปใช้ต่อ
You do not have the required permissions to view the files attached to this post.
Dim iCount As Long, fstLine As Long
Dim strMatch As String, strCount As String
Dim shData As Worksheet, shResult As Worksheet
Set shData = Worksheets("data")
Set shResult = Worksheets("result")
With shResult
strMatch = .Range("t3").Value & "*"
strCount = "*" & .Range("t3").Value
End With
With shData
fstLine = Application.Match(strMatch, .Range("c:c"), 0)
iCount = Application.CountIf(.Range("c:c"), strCount)
With shResult
.Range("a3").Resize(.UsedRange.Rows.Count, 14).ClearContents
.Range("a3").Resize(iCount, 14).Value = _
shData.Range("a" & fstLine).Resize(iCount, 14).Value
End With
End With
Dim iCount As Long, fstLine As Long
Dim strMatch As String, strCount As String
Dim shData As Worksheet, shResult As Worksheet
Set shData = Worksheets("data")
Set shResult = Worksheets("result")
With shResult
strMatch = .Range("t3").Value & "*"
strCount = "*" & .Range("t3").Value
End With
With shData
fstLine = Application.Match(strMatch, .Range("c:c"), 0)
iCount = Application.CountIf(.Range("c:c"), strCount)
With shResult
.Range("a3").Resize(.UsedRange.Rows.Count, 14).ClearContents
.Range("a3").Resize(iCount, 14).Value = _
shData.Range("a" & fstLine).Resize(iCount, 14).Value
End With
End With
Sub Number()
On Error Resume Next
Dim iCount As Long, fstLine As Long
Dim strMatch As String, strCount As String
Dim shData As Worksheet, shResult As Worksheet
Set shData = Worksheets("data")
Set shResult = Worksheets("result")
With shResult
strMatch = .Range("t3").Value & "*"
' strCount = .Range("t3").Value & "*"
strCount = "*" & .Range("t3").Value
End With
With shData
fstLine = Application.Match(strMatch, .Range("c:c"), 0)
iCount = Application.CountIf(.Range("c:c"), strMatch)
With shResult
.Range("a3").Resize(.UsedRange.Rows.Count, 14).ClearContents
.Range("a3").Resize(iCount, 14).Value = _
shData.Range("a" & fstLine).Resize(iCount, 14).Value
End With
End With
With shResult
strMatch = .Range("V3").Value & "*"
' strCount = .Range("t3").Value & "*"
strCount = "*" & .Range("v3").Value
End With
With shData
fstLine = Application.Match(strMatch, .Range("c:c"), 0)
iCount = Application.CountIf(.Range("c:c"), strMatch)
With shResult
'.Range("a3").Resize(.UsedRange.Rows.Count, 14).ClearContents
.Range("a" & Range("c" & Rows.Count).End(xlUp).Row+1).Resize(iCount, 14).Value = _
shData.Range("a" & fstLine).Resize(iCount, 14).Value
End With
End With
End Sub
Sub Number()
On Error Resume Next
Dim iCount As Long, fstLine As Long
Dim strMatch As String, strCount As String
Dim shData As Worksheet, shResult As Worksheet
Set shData = Worksheets("data")
Set shResult = Worksheets("result")
With shResult
strMatch = .Range("t3").Value & "*"
strCount = .Range("v3").Value & "*"
End With
With shData
fstLine = Application.Match(strMatch, .Range("c:c"), 0)
iCount = Application.Match(strCount, .Range("c:c"), 0) - 3 + Application.CountIf(.Range("c:c"), strCount)
With shResult
.Range("a3").Resize(.UsedRange.Rows.Count, 14).ClearContents
.Range("a3").Resize(iCount, 14).Value = _
shData.Range("a" & fstLine).Resize(iCount, 14).Value
End With
End With
End Sub
Dim rs As Range, cri As Range
Dim rt As Range
Dim rtBook As Workbook
Dim dbBook As Workbook
Set rtBook = ThisWorkbook
Dim i As Integer, j As Integer
Dim c1 As Integer, c2 As Integer
With rtBook.Worksheets("result")
.Range("c2").CurrentRegion.ClearContents
Set rt = .Range("a2")
c1 = .Range("t3").Value
c2 = .Range("v3").Value
End With
Set dbBook = Workbooks.Open(Filename:="C:\Users\Data.xlsx")
j = 1 'Criteria rows
With dbBook.Worksheets("sheet1")
Set rs = .Range("a2", .Range("n" & .UsedRange.Rows.Count))
.Range("q1").Value = "Acc"
If c1 = 0 And c2 > 0 Then
.Range("q2").Value = c2 & "*"
j = j + 1
ElseIf c1 > 0 And c2 = 0 Then
.Range("q2").Value = c2 & "*"
j = j + 1
ElseIf c1 > 0 And c2 > 0 And c2 < c1 Then
.Range("q2").Value = c1 & "*"
.Range("q3").Value = c2 & "*"
j = j + 2
Else
For i = 0 To c2 - c1
.Range("q2").Offset(i, 0).Value = c1 + i & "*"
j = j + i
Next i
End If
Set cri = .Range("q1").Resize(j)
rs.AdvancedFilter xlFilterCopy, cri, rt
cri.ClearContents
End With