tigertiger
Coming back ...
- Tham gia
- 25/1/07
- Bài viết
- 1,940
- Được thích
- 1,906
Ngắn gọn hơn chỉ cần:
Trích:
=A1*NOT(COUNTIF($B:$B,A1)>0)
thế thì A1 có giá trị =0 thì không dùng được,
Ngắn gọn hơn chỉ cần:
Trích:
=A1*NOT(COUNTIF($B:$B,A1)>0)
Sorry! Mình nhầm cú pháp. Hôm qua vào thấy câu hỏi đơn giản nên reply luôn không text trên Excel nên bị nhầm.Hình như cái này ngược rồi! Phải như thế này mới được:
Mà làm sao làm được Countif(A1,$B$1:$B) nhỉ?Mã:=if(Countif($B:$B,A1)>0,"",A1)
Trong các cột 'C' & 'D' ta có khoảng 100.000 số khác nhau;Chắc cái này trong E2007 rồi, phải tránh thôi, vì mình chưa có xài qua!
Option Explicit
Sub XoaTrung()
Dim lRow As Long, Ww As Long
Dim dRng As Range
Columns("A:A").Select: Selection.Insert Shift:=xlToRight
[A1] = "TT": lRow = Cells(Rows.Count, "B").End(xlUp).Row
For Ww = 2 To lRow
Cells(Ww, "A") = Ww - 1
Next Ww
Sort2Column [H2], [a2]
For Ww = 3 To lRow
With Cells(Ww, "H")
If .Value = .Offset(-1) And .Offset(, 1) = .Offset(-1, 1) _
And .Offset(, -5) = .Offset(-1, -5) Then
If dRng Is Nothing Then
Set dRng = .Offset()
Else
Set dRng = Union(dRng, .Offset())
End If
End If
End With
Next Ww
'MsgBox dRng.Address'
dRng.EntireRow.Select: Selection.Delete
Sort2Column [a2], [H2]
Columns("A:A").Select
Selection.Delete Shift:=xlToLeft
End Sub
[B]Sub Sort2Column(Rng1 As Range, rng2 As Range)[/B]
Columns("A:N").Select
Selection.Sort Key1:=Rng1, Order1:=xlAscending, Key2:=rng2 _
, Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1
[B]End Sub[/B]
Sub AdvancedFilter()
cc = Cells(1, 1).End(xlToRight).Column
rdt = Cells(1, 1).End(xlDown).Row
Set data = Range(Cells(1, 1), Cells(rdt, cc))
Range(Cells(1, cc + 2), Cells(Cells.Rows.Count, Cells.Columns.Count)).ClearContents
data.AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Cells(1, cc + 2), Unique:=True
rfl = Cells(1, cc + 2).End(xlDown).Row
Range(Cells(1, cc + 2), Cells(rdt, cc * 2 + 1)).Copy Cells(1, 1)
Range(Cells(1, cc + 2), Cells(rdt, cc * 2 + 1)).ClearContents
Set data = Nothing
End Sub
Bạn hãy đến đây:trích lọc không trùng nhau trong một cột , cứu cứu !
Các bác, anh chị, các cao thủ giúp em. Em có một cột (3635 row)chứa các số điện thoại nhưng trong đó có những số trùng nhaum vậy làm cách nào để trích ra các số "không trùng nhau, các số trùng nhau thì lấy 1 lần thôi !
xin giúp em ! thanks!
trích lọc không trùng nhau trong một cột , cứu cứu !
Các bác, anh chị, các cao thủ giúp em. Em có một cột (3635 row)chứa các số điện thoại nhưng trong đó có những số trùng nhaum vậy làm cách nào để trích ra các số "không trùng nhau, các số trùng nhau thì lấy 1 lần thôi !
xin giúp em ! thanks!
Ví dụ dữ liệu là vùng $A$1:$M$24. Lọc bằng Advance Filter với các mục chọn:
+ Copy to another location
+ List range: $A$1:$M$24
+ Criteria range: bỏ trống
+ Copy to: $O$1
+ Unique records only
Nó sẽ lọc các dòng dữ liệu không trùng sang ô O1.
Bạn nên tách 2 cột thời gian IN và OUT. Tạm thời như thế này vì thời gian IN thường <12h và OUT>12h.Chào các bạn,
Mình có một vấn đề cần giúp đỡ. Có bạn nào biết cách rút trích dữ liệu từ file dữ liệu thô không? Mình có gửi file đính kèm và mong nhận được sự giúp đỡ của các bạn.
Chào các bạn,
Mình có một vấn đề cần giúp đỡ. Có bạn nào biết cách rút trích dữ liệu từ file dữ liệu thô không? Mình có gửi file đính kèm và mong nhận được sự giúp đỡ của các bạn.
Bạn sửa lại name là Ok, vào Insert\name\define và sửa lại vùng dữ liệu. Tuy nhiên mình tán thành cách làm đơn giản như a Ndu, dùng công cụ có sẵn của Excel là Avanced Filter cho đơn giản ! Hơn nữa bạn sẽ gặp rắc rối khi số lượng ngày phải theo dõi quá lớn (không đủ số cột).Cám ơn bạn DOSNET và HuuThang_BD.
Bạn DOSNET cho mình hỏi, nếu mình muốn sử dụng đến dòng thứ 65536 cho Date, Name và Time thì mình sửa ở đâu.
Cám ơn bạn DOSNET.
date=Data!$B$5:$B$65000
name=Data!$G$5:$G$65000
time=Data!$C$5:$C$65000
Tôi thấy cách bố trí dử liệu như ở sheet Data mới là chuẩn chứ (chỉ cần sửa lại như DOSNET nói: Chia IN/OUT ra làm 2 cột)
Khi ấy muốn truy xuất bất kỳ Tên nào, ngày nào, giờ nào cũng là việc rất dể dàng (dùng Advanced Filter)... chứ ai lại bố trí dử liệu theo kiểu sheet Report chứ... Nếu theo dỏi khoảng thời gian 90 ngày thì.. bó tay à?
Bạn xem thử file đính kèm nha. Mình dùng một cột phụ ở sheet Data. Khi muốn thống kê dữ liệu thêm cho những ngày khác thì bạn copy 3 cột E, F, G qua và sửa ngày lại nhé.
P/S: Mình xin góp ý thêm là bạn nên lập Repost theo số phòng chứ không nên lập theo tên khách hàng như thế. Vì giả sử mỗi ngày mỗi phòng là một khách mới, mà bạn có vài chục phòng thì một tháng bạn phải theo dõi hàng trăm khách àh!!!
Xem lại nhé. Đọc kỹ rồi hãy cho ý kiến.
P/S: Mình xin góp ý thêm là bạn nên lập Repost theo số phòng chứ không nên lập theo tên khách hàng như thế. Vì giả sử mỗi ngày mỗi phòng là một khách mới, mà bạn có vài chục phòng thì một tháng bạn phải theo dõi hàng trăm khách àh!!!
Góp thêm với các bạn 1 cách sử dụng Pivot để lọc danh sách sau đó dùng công thức Index,sumif,match để tính toán cho nhẹ File.Đảm bảo với dữ liệu lớn không bị ì ạch.Chào các bạn,
Mình có một vấn đề cần giúp đỡ. Có bạn nào biết cách rút trích dữ liệu từ file dữ liệu thô không? Mình có gửi file đính kèm và mong nhận được sự giúp đỡ của các bạn.
Bạn Anhtuan 3a thân !Em có 1 file Exel, có 2 vùng dữ liệu V1 và V2 ban đâu giống nhau, nhưng sau đó vùng V2 hàng ngày có sự thay đổi giá trị. Vậy em phải dùng hàm gì để lọc và thấy được sự thay đổi này vậy? EM là thành viên mới, mong các bác chỉ giúp. Thanks.
Bạn Anhtuan 3a thân !
Bạn có thể sử dụng hàm if ở cột V3 như sau : if(v1=v2,"trùng",v1-v2), sau đó bạn chọn vùng v3 vào Data\fiter lọc bỏ số liệu trùng sẽ thấy giá trị của số liệu thay đổi .
1. Giả sử ô A2:A40000 có chứa dữ liệu cần tìm trùng nhau:
2. Ô B2 gõ vào:
3. Copy công thức xuống tới ô B40000Mã:=If(Countif([B][COLOR=Blue]$A$2[/COLOR][/B]:A2,A2)>1,"Trung","") Lưu ý chỗ in đậm màu xanh, cố định ô đầu tiên
4. Autofilter (Alt+D, F, F) hoặc Menu/Data/Filter/AutoFilter
5. Lọc điều kiện cột B="Trung"
6. Chiếu sáng vùng vừa lọc ra (trừ dòng đầu tiên A1:B1 ra nhé, đây là dòng tiêu đề), dùng phím tắt Ctrl+Shift+Down, Ctrl+Shift+Right
7. Ấn Ctrl+"-", chọn Entire Row.
Bạn ơi, nếu cũng áp dụng cách này nhưng là với 2 cột thì sao?
Ví dụ mình để ở trong file kèm đó.
Cảm ơn các bạn nhiều nhiều nhé.
Em có file như sau:
A
B
C
D
A
D
Em muốn lọc ra, những giá trị nào có mặt thì lấy ra nên kết quả chỉ là
A
B
C
D
Cho dù nó lặp lại bao nhiêu lần nữa thì cũng lấy giá trị đại diện có mặt là được.
Thank you mấy huynh.
Chào
Mình có thắc mấc muốn hỏi các huynh và các Tỷ
Mình đính kèm file danh sách chấm điểm.xls
trong sheet tính điểm mình đã có danh sách mã khách hàng (cột D-mã khách hàng là số-VD: 123456) đã được chấm điểm trong các ngày 30/06/07, 31/12/07 , 30/06/08, 30/09/08.
Trong các sheet còn lại có một số khách hàng chưa được tính điểm
tôi muốn lọc ra trong các sheet 30/06/07, 31/12/07 , 30/06/08, 30/09/08-các ngày đó có mã khách hàng nào chưa được tính điểm thì làm như thế nào(mã khách hàng nào đã có trong cột D của sheet "tính điểm" thì không lấy) .
mong các huynh giúp đỡ!! (giá trị được lọc ra có thể nằm ở đâu cũng được,có thể là sheet mới)
Regards
Macarong
P/S : mình cần gấp lắm,ai có lời giải mình sẽ gặp nhau uống cà fê cho zui
Mục đích là tìm trong các sheet ngày đó có ai chưa được có trong sheet "tinh diem" ,mỗi sheet sẽ có 1 danh sách tương ứng(danh sách các KH chưa có trong'tinh diem")
Thực ra Dosnet đã gộp 3 sheet vào một sheet LOC cho bác rồi, nếu thích làm riêng từng sheet thì đơn giản thôi.Cám ơn Dosnet, vẫn chưa được, ví dụ vẫn chưa lọc ra ngày 30/06/07 có khách hàng nào chưa chấm điểm.
mục đích là tìm trong các sheet ngày đó có ai chưa được có trong sheet "tinh diem" ,mỗi sheet sẽ có 1 danh sách tương ứng(danh sách các KH chưa có trong'tinh diem")
vậy không giá trị nào đã trùng thì không muốn xuất hiện thì dùng như thế nào?
vi du A B C A D F E A C F ,muốn lọc ra chỉ có B D E thì làm sao?
Option Explicit
Sub OnlyOne()
Dim eRw As Long, Ff As Long: Dim myAdd As String
Dim Rng As Range, sRng As Range
eRw = [A65500].End(xlUp).Row: ReDim DaCo(2 To eRw) As Boolean
For Ff = 2 To eRw
Set Rng = Range("A" & Ff + 1 & ":A" & eRw)
If Not DaCo(Ff) Then
Set sRng = Rng.Find(what:=Cells(Ff, "A"), LookIn:=xlFormulas, lookat:=xlWhole)
If Not sRng Is Nothing Then
myAdd = sRng.Address
If DaCo(sRng.Row) = False Then
Do
DaCo(sRng.Row) = True
Set sRng = Rng.FindNext(sRng)
Loop While Not sRng Is Nothing And sRng.Address <> myAdd
End If
Else
[c65500].End(xlUp).Offset(1) = Cells(Ff, "A").Value
End If: End If
Next Ff
End Sub
Còn em thì khoái dùng COUNTIF trong trường hợp này hơn:PHP:Option Explicit Sub OnlyOne() Dim eRw As Long, Ff As Long: Dim myAdd As String Dim Rng As Range, sRng As Range eRw = [A65500].End(xlUp).Row: ReDim DaCo(2 To eRw) As Boolean For Ff = 2 To eRw Set Rng = Range("A" & Ff + 1 & ":A" & eRw) If Not DaCo(Ff) Then Set sRng = Rng.Find(what:=Cells(Ff, "A"), LookIn:=xlFormulas, lookat:=xlWhole) If Not sRng Is Nothing Then myAdd = sRng.Address If DaCo(sRng.Row) = False Then Do DaCo(sRng.Row) = True Set sRng = Rng.FindNext(sRng) Loop While Not sRng Is Nothing And sRng.Address <> myAdd End If Else [c65500].End(xlUp).Offset(1) = Cells(Ff, "A").Value End If: End If Next Ff End Sub
Sub OnlyOne()
Dim Clls As Range
With Range([A2], [A65536].End(xlUp))
For Each Clls In .SpecialCells(2, 23)
If WorksheetFunction.CountIf(.Cells, Clls) = 1 Then
[C65536].End(xlUp).Offset(1) = Clls
End If
Next
End With
End Sub
Sub FilterUniqueNumbers()
Dim rngYourrange As Range
Dim rngCell As Range
Dim colUniqueNumbers As New Collection
Dim i As Integer
' Set the range that you want to filter for unique numbers
Set rngYourrange = Worksheets(1).Range("A1:A10")
' Store the unique range values in the collection object. Note we use the
' range value converted to a string as the key value.
On Error Resume Next
For Each rngCell In rngYourrange
colUniqueNumbers.Add rngCell.Value, CStr(rngCell.Value)
Next rngCell
' Write each item from the collection object to column B in worksheet 1.
For i = 1 To colUniqueNumbers.Count
Worksheets(1).Cells(i, 2).Value = colUniqueNumbers(i)
Next i
End Sub
Sub FilterUniqueNumbers2()
Dim rngDuplicates As Range
Dim rngDestination As Range
Dim rngCriteria As Range
' Filter entire column A, or use Range("A1:A10") or something to check only 10 rows.
Set rngDuplicates = ThisWorkbook.Worksheets(1).Range("A:A")
Set rngDestination = ThisWorkbook.Worksheets(1).Range("B1")
Set rngCriteria = ThisWorkbook.Worksheets(1).Range("C1:C5")
rngDuplicates.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=rngCriteria, _
CopyToRange:=rngDestination, Unique:=True
End Sub
Sub FilterUniqueNumbers3()
Dim vValue As Variant, vVals As Variant
Dim myRange As Range
Dim i As Long
Dim dArr() As Double
Dim oDic As Object
Set myRange = Worksheets(1).Range("A1:A10")
'The Dictionary object is always present in Windows so it can always be created
Set oDic = CreateObject("scripting.dictionary")
oDic.comparemode = vbTextCompare
'Read the values from a range into vVals
vVals = myRange.Value
'ReDim dArr and make it two dimensional by adding the second argument 1 To 1
'otherwise you can't dump it in a worksheet later.
ReDim dArr(UBound(vVals) - 1, 1 To 1)
For Each vValue In vVals
'Note the use of the Dictionary object to exclude double values
If Not IsEmpty(vValue) And Not oDic.exists(vValue) Then
dArr(i, 1) = vValue
oDic.Add vValue, Nothing
i = i + 1
End If
Next vValue
'Free memory by removing the Dictionary object and vVals from memory
Set oDic = Nothing
Erase vVals
'Remove old data
myRange.Clear
'Dump dArr values in worksheet
myRange.Resize(i).Value = dArr
End Sub
Sub ExtractItems()
Dim clsExtract As CUniqueItems
Dim rngSel As Range, rngTar As Range
Set clsExtract = New CUniqueItems
Set rngSel = Selection
Set rngTar = ThisWorkbook.Sheets("Sheet2").Range("A1")
clsExtract.TheSelection = rngSel
clsExtract.Target = rngTar
clsExtract.ExtractUniques
End Sub
Option Explicit
' Class constants
Private Const msTAB As String = vbTab
' Class variables
Private mrSelection As Range
Private mrTarget As Range
' Class Properties
' Selection
Property Get TheSelection() As Range
Set TheSelection = mrSelection
End Property
Property Let TheSelection(rng As Range)
Set mrSelection = rng
End Property
' Target
Property Get Target() As Range
Set targert = mrTarget
End Property
Property Let Target(rng As Range)
' The target can only be one cell, so if more than
' one cell is chosen, set the range to the
' upper leftmost cell.
If rng.Count> 1 Then
Set mrTarget = rng.Cells(1, 1)
Else
Set mrTarget = rng
End If
End Property
' Class methods
Sub ExtractUniques()
' Variable declarations
Dim rngCell As Range
Dim col As Collection
Dim iColCnt As Integer, i As Integer
Dim vValue As Variant
' Create a new collection.
Set col = New Collection
' Get the number of columns in the range
iColCnt = mrSelection.Columns.Count
' If the column count is greater than 1, resize it to 1 column.
If iColCnt> 1 Then Set mrSelection = mrSelection.Resize(, 1)
' Turn off updating.
Application.ScreenUpdating = False
' Add each unique item to the collection.
For Each rngCell In mrSelection.Cells
vValue = ""
' If the column count is great than one, add the whole
' row of data in teh selected range. We'll split it out
' later.
If iColCnt> 1 Then
For i = 0 To iColCnt - 1
' Add all the data from the selected rows to the variable,
' separating them by a tab.
vValue = vValue & rngCell.Offset(0, i).Value & msTAB
Next i
Else
vValue = rngCell.Value
End If
' Temporarily turn off error handling.
On Error Resume Next
' Add to the collection.
col.Add CStr(vValue), CStr(vValue)
' Turn error handling back on.
On Error GoTo 0
Next rngCell
' Write the data back out to the target.
i = 1
For i = 1 To col.Count
mrTarget.Offset(i - 1, 0).Value = col(i)
Next i
' If the selection column count is greater than 1,
' then convert the output text to multiple columns
' using text to columns.
If iColCnt> 1 Then
mrTarget.Parent.Activate
mrTarget.Select
Range(Selection, Selection.Offset(col.Count - 1, 0)).Select
Selection.TextToColumns Destination:=Range(Selection.Address), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False
End If
' Turn on updating and kill the collection object.
Application.ScreenUpdating = True
Set col = Nothing
End Sub
Sub enkel()
Dim sq As Variant
Dim j As Long
If Selection.Columns.Count = 1 Then
sq = Application.WorksheetFunction.Transpose(Selection.SpecialCells(xlCellTypeConstants))
For j = 1 To UBound(sq)
sq=split(replace("|" & join(sq,"|") & "|","|" & sq(j) & "|","") & "|" & sq(j),"|")
Next
Sheets(1).[K1].Resize(UBound(sq) + 1) = Application.WorksheetFunction.Transpose(sq)
End If
End Sub
Bình thường thì code của bạn nhanh gấp đôi của mình! Một khi rất ít ký tự trong cột trùng nhauCòn em thì khoái dùng COUNTIF trong trường hợp này hơn:
PHP:Sub OnlyOne() Dim Clls As Range With Range([A2], [A65536].End(xlUp)) For Each Clls In .SpecialCells(2, 23) If WorksheetFunction.CountIf(.Cells, Clls) = 1 Then [C65536].End(xlUp).Offset(1) = Clls End If Next End With End Sub
Có thể trả lời bạn ngay là KHÔNG CÓ CÁCHEm có vấn đề này từ lâu muốn hỏi.
Có cách nào đưa một danh sách duy nhất vào validation không các anh ?
Không dùng cột phụ & ko VBA .
em có kẻm File ví dụ ,nhưng đang dùng cột phụ .
File này em tìm trong loạt bài viết của anh Nduhi hi
Em cám ơn.
Em có vấn đề này từ lâu muốn hỏi.
Có cách nào đưa một danh sách duy nhất vào validation không các anh ?
Không dùng cột phụ & ko VBA .
em có kẻm File ví dụ ,nhưng đang dùng cột phụ .
File này em tìm trong loạt bài viết của anh Nduhi hi
Em cám ơn.
Theo ý của bạn ko dùng cột phụ là sao?(có phải cột chứa dữ liệu, từ cột đó bạn đặt tên cho nó, sau đó cột đó được dùng để lấy nội dung của nó hiện trong list các giá trị mà bạn lấy trong cell mà bạn muốn validation hả?)
Nếu như vậy thì rất khó. vì phải có một nguồn nào đó bạn mới lấy được list chứ, nếu ko dùng list chỉ dùng để nhập các điều kiện logic (vd< 5 chẳng hạn)
Cách này không được, vì nếu nhập trực tiếp, Excel chỉ cho phép nhập với số lượng ký tự có hạn mà thôiMình làm thế này không cần dùng cột phụ, tuy nhiên phai nhập thủ công. Với danh sách dài như của bạn cũng khá vất vả đấy. Chỉ đơn giản là trong mục source nhập dự liệu đầu vào các dữ liệu ngăn cách nhau bởi dấu ,
Mình làm thế này không cần dùng cột phụ, tuy nhiên phai nhập thủ công. Với danh sách dài như của bạn cũng khá vất vả đấy. Chỉ đơn giản là trong mục source nhập dự liệu đầu vào các dữ liệu ngăn cách nhau bởi dấu ,
Khẳng định với bạn rằng: Cho đến thời điểm hiện nay, với Office hiện nay là KHÔNG CÓ CÁCH NÀO KHÁC... kể cả VBA (nếu không dùng cột phụ)Cái này thì nói chi ,nếu dử liệu nhiều quá thì củng bó tay .Mình hỏi coi có cách nào tối ưu hơn ko thôi ,Cái này dùng cột phụ như các anh ndu,anh boyxin là ok rồi .
Bạn dùng chức năng Advanced Filter và nhớ tích chọn Unique records only.Chào các anh/chị.
Trong bảng tính có các dữ liệu trùng nhau (tên, màu sắc...) mình muốn loại bỏ những tên trùng nhau (chỉ giữ lại 1 tên) thì phải sdụng công thức nào ?
Xem file đính kèm.
Thanks
Cám ơn tedaynui đã trả lời. Nhưng mình làm theo cách của bạn ko ra đ.c kquả như mong muốn.Bạn dùng chức năng Advanced Filter và nhớ tích chọn Unique records only.
TDN
Với file của bạn, ta sẽ làm như sau:Cám ơn tedaynui đã trả lời. Nhưng mình làm theo cách của bạn ko ra đ.c kquả như mong muốn.
Bạn có thể cho mình giải pháp khác ko ?
Với file của bạn, ta sẽ làm như sau:
1> Copy C2:C9 rồi paste vào B10 ---> Vậy cột B sẽ có dử liệu từ B1 đến B16
2> Quét chọn B1:B16, vào menu Date\Filter\Advanced Filtera) Check vào muc "Copy to another location"3> Bấm nút OK và xem kết quả
b) Khung Copy to, chọn 1 cell trống nào đó mà bạn cần đặt dử liệu sau khi lọc
c) Check vào "Unique records only"
Tôi biết bạn sai chổ nào rồi: Do vùng chọn của bạn không có tiêu đề, nên Advanced Filter sẽ xem cell đầu tiên chính là tiêu đề (chính là cell có chử Xanh)Thanks nd96181631 nhiều. Bạn hiểu ý của mình. Nhưng mình làm nó ra kết quả các mầu đều đúng cả.
Riêng màu xanh nó ra 2 dòng.
Bạn xem lại cho mình nhé.
Thanks nd96181631 nhiều. Bạn hiểu ý của mình. Nhưng mình làm nó ra kết quả các mầu đều đúng cả.
Riêng màu xanh nó ra 2 dòng.
Bạn xem lại cho mình nhé.
Tôi biết bạn sai chổ nào rồi: Do vùng chọn của bạn không có tiêu đề, nên Advanced Filter sẽ xem cell đầu tiên chính là tiêu đề (chính là cell có chử Xanh)
Giờ bạn thử làm lại y chang như tôi nói, nhưng khi lọc nhớ chọn luôn tiêu đề (nếu chưa có tiêu đề thì thêm vào)
Đương nhiên mỗi khi dử liệu thay đổi bạn phải thao tác lọc lại từ đầuHi ndu96081631.
Mình có thêm 1 ý nữa là nếu cột màu 1 or cột màu 2 bỏ đi 1 hoặc nhiều màu thì cột số lượng màu cũng tự thay đổi theo.
Khi đó mình sẽ phải làm sao ?. Hiện tại thì nó chưa làm đ.c.
Uh, thanks domfootwear. Nhưng những cái đó mình ko biết làm.Cho mình giải pháp nhé.Cái này bạn phải record rồi sau đó nếu muốn update dữ liệu bạn chạy macro đó nó mới update mặt hàng mới được chứ đã copy dán rồi thì sao cập nhật được ngoại trừ dùng công thức.
Thân
Dữ liệu chỉ là như vậy thôi. Mình có nhiệm vụ liệt kê các loại màu. Sau đó tính tổng (số kg) các màu hiện có.Đương nhiên mỗi khi dử liệu thay đổi bạn phải thao tác lọc lại từ đầu
Muốn tự động thì dùng VBA hoặc công thức đều được ---> Nếu bạn đồng ý thì tốt nhất nên đưa dử liệu thật lên đây (sẽ đở mất công chỉnh sửa)
xem thử file này ---> Mở file nhớ Enable macro nhéDữ liệu chỉ là như vậy thôi. Mình có nhiệm vụ liệt kê các loại màu. Sau đó tính tổng (số kg) các màu hiện có.
Liệt kê số lượng màu là mình đã giải quyết đ.c bài toán đó rồi.
Nếu dùng công thức thì sẽ update đc nhưng cthức sẽ sdụng như thế nào. Bạn giúp mình nhé !
Uh, cái này thì ok rồi. Nhưng chèn macro ra sao bạn chỉ cho mình nhé.xem thử file này ---> Mở file nhớ Enable macro nhé
Muốn công thức thì tham khảo tại đây:
http://www.giaiphapexcel.com/forum/showthread.php?t=12035
Tải file về... xem công thức trong Define name (vào menu Insert\Name\Define ) ---> Người ta định nghĩa DS_1 và DS_2 là vùng thuộc 2 sheet khác nhau ---> Bạn sửa lại tên sheet cho phù hợp với file của bạn là được rồindu96081631 Cho mình cái công thức trích lọc trên 1 sheet đ.c rồi. Mình vô đọc như đám rừng ấy. Công lực chưa hiểu hết đ.c (hix hix)
Tải file về... xem công thức trong Define name (vào menu Insert\Name\Define ) ---> Người ta định nghĩa DS_1 và DS_2 là vùng thuộc 2 sheet khác nhau ---> Bạn sửa lại tên sheet cho phù hợp với file của bạn là được rồi
Quan trọng là 2 name DS_1 và DS_2 ---> Bạn phải sửa lại cho phù hợp với dử liệu thật của bạn:DK_1: IF(MATCH(DS_1,DS_1,0)=ROW(INDIRECT("1:"&ROWS(DS_1))),ROW(INDIRECT("1:"&ROWS(DS_1))),"")
DK_2: (MATCH(DS_2,DS_2,0)=ROW(INDIRECT("1:"&ROWS(DS_2))))*(COUNTIF(DS_1,DS_2)<1)*(ROW(INDIRECT("1:"&ROWS(DS_2))))
DK_3: IF(DK_2=0,"",DK_2)
DS_1: OFFSET(Sheet1!$A$4,,,COUNTA(Sheet1!$A$4:$A$1003),)
DS_2: OFFSET(Sheet2!$A$1,,,COUNTA(Sheet2!$A$1:$A$1000),)
Công thức: IF(ROWS($1:1)>COUNT(DK_1)+COUNT(DK_3),"",IF(ROWS($1:1)>COUNT(DK_1),INDEX(DS_2,SMALL(DK_3,ROWS($1:1)-COUNT(DK_1)),),INDEX(DS_1,SMALL(DK_1,ROWS($1:1)),)))
Hix, Nghiên cứu từ hôm qua tới giờ mà cũng chưa vỡ ngu đ.c hết. Còn lờ mờ về cái giải thuật & mấy ct này !!
ndu96081631 & các bạn giải thích rõ thêm cho mình hiểu nhé.
mình có bài tập theo file đính kèm, bình thường mình vẫn làm thủ công nhưng hiện tại số khách hàng lên quá nhiều nên gặp rất nhiều khó khăn. Các anh/chị trên DĐ giúp mình bằng công thức nhé.
Ở cột I, mình cần hiện mã của loại sản phẩm theo từng khách hàng (chỉ lấy 1 lần)
Cám ơn nhiều
Yêu cầu này dùng Advanced Filter cũng tốt, nhưng sẽ không nhanh bằng Consolidatemình có bài tập theo file đính kèm, bình thường mình vẫn làm thủ công nhưng hiện tại số khách hàng lên quá nhiều nên gặp rất nhiều khó khăn. Các anh/chị trên DĐ giúp mình bằng công thức nhé.
Ở cột I, mình cần hiện mã của loại sản phẩm theo từng khách hàng (chỉ lấy 1 lần)
Cám ơn nhiều
2 cột điểm thì cũng vẫn dùng Consolidate thôi ---> Add vào 2 vùng C2Cám ơn các anh/ chị, nhưng cũng xin hỏi thêm trong trường hợp có 2 cột điểm, thì có thể dùng cách này không? Thực sự mình muốn hỏi công thức vi hàng tuần, các số liệu của mình đều thay đổi, nếu chỉ cần update so liệu thôi thi bảng điểm trung binh tự động chạy theo.
Các anh/chị xem thêm trong file để hiểu rõ ý mình hơn nhé.
Sub DiemTB()
Range("I1").CurrentRegion.Offset(1).ClearContents
With Range([C2], [C65536].End(xlUp))
Range("I2").Consolidate _
Array(.Resize(, 2).Address(, , 2), .Resize(, 3).Address(, , 2)), 1, False, True
End With
End Sub
Công thức tính trung bình không có vấn đề, nhưng còn phần lọc duy nhất rất khó "nhai" ---> Công thức này khá "nặng" ---> Là nguyên nhân khiến cho file chạy chậm với file có dử liệu lớnMình làm bằng công thức và lọc tự động khi dữ liệu nguồn thay đổi. Tuy nhiên vẫn hướng bạn tham khảo, nên sử dụng Consolidate của bác ndu. Thân!
Chức năng PasteSpecial có cho phép Paste Validation ---> Nếu bạn làm không ra kết quả thì có lẽ sai sót nằm ở địa chỉ tham chiếu trong công thức (tương đối hay tuyệt đối)Cho mình hỏi cách copy Validation từ cell này qua các cells khác trong bảng tính thì làm bằng cách nào? Mình dùng đủ cách như Copy, Paste Special hay chọn mục Apply these changes to all other with the same settings đều không được.
Thanks very much!
Sao lạ vậy ?? Mình đã test thử chỉ cần Ctr+C và Ctrl+V là được mà. Bạn thử lại xemCho mình hỏi cách copy Validation từ cell này qua các cells khác trong bảng tính thì làm bằng cách nào? Mình dùng đủ cách như Copy, Paste Special hay chọn mục Apply these changes to all other with the same settings đều không được.
Thanks very much!
Copy được nhưng ý của mình là các biến trong các formular không thay đổi theo cell, ví dụ như formular countif($A$1:A1,A2)=0 của cell A2 khi copy sang cell A3 vẫn giữ nguyên chứ không đổi thành countif($A$1:A2,A3)=0. Như thế là phải sửa từng cell. Mà bảng của mình thì phải trên 2000 cell trên 1 column cần sửa cơ.Chức năng PasteSpecial có cho phép Paste Validation ---> Nếu bạn làm không ra kết quả thì có lẽ sai sót nằm ở địa chỉ tham chiếu trong công thức (tương đối hay tuyệt đối)
Muốn biết nguyên nhân không gì bằng đưa file lên bạn nhé!
Làm gì có chứ... tôi đã thí nghiệm và không thấy hiện tượng như bạn nóiCopy được nhưng ý của mình là các biến trong các formular không thay đổi theo cell, ví dụ như formular countif($A$1:A1,A2)=0 của cell A2 khi copy sang cell A3 vẫn giữ nguyên chứ không đổi thành countif($A$1:A2,A3)=0. Như thế là phải sửa từng cell. Mà bảng của mình thì phải trên 2000 cell trên 1 column cần sửa cơ.
Hôm nay đơ rồi,ko thêm đc file nữa.
Mình mô tả vậy
Cột 1 : Số hợp đồng lần lượt 55 . 14 . 35 .57. 78 . 96 . 47
Cột 2 : Ngày kí 1/1/2000 4/2/1999 5/3/2001 4/2/2002 3/5/2003 5/7/2005 9/9/2004
Cột 3 : Tên công ty: A . A .B .C .B. D. E
Mọi ng thông cảm!!!
Gửi vào huuthang@tva.com.vn mình xem giúp choanh cho em mail đi em gửi lại cho