Chuyển dữ liệu cột sang hàng

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

bkphong

Thành viên mới
Tham gia
21/1/11
Bài viết
38
Được thích
2
Mong các cao thủ nghiên cứu giúp làm thế nào để có thể chuyển đổi dữ liệu tự động từ dạng cột khách sạn dạng hàng tự động như thế này.
Bài đã được tự động gộp:

Mong các bác giảm thời gian giúp em với nhé.
 

File đính kèm

  • Nghien cuu.xlsx
    7.6 MB · Đọc: 36
Lần chỉnh sửa cuối:
Upvote 0
Bạn không mô tả chi tiết thì không ai hiểu nhé

Có vẻ như các bác à

Bạn không mô tả chi tiết thì không ai hiểu nhé

Có vẻ như các bác ấy đang giảm về 0!
Xin lỗi các bác mấy hôm rồi em bận quá ko vào diễn đàn được. Nay mới lại có thời gian vào mong các bác thông cảm và hướng dẫn giúp em với. Cảm ơn ah
Bài đã được tự động gộp:

Ý em muốn là làm thế nào mà VBA tự động chạy ra giữ cột J, K, L mà vẫn có link = dữ liệu ở cột H. Trước em cũng làm được cái VBA để có dữ liệu cột J, K, L rồi nhưng nó ko có dấu =
Bài đã được tự động gộp:

Bạn không mô tả chi tiết thì không ai hiểu nhé

Có vẻ như các bác ấy đang giảm về 0! Bác giúp em với bác nhé
 

File đính kèm

  • Test (Tach chi phi VL, NC, MTC).xlsm
    215 KB · Đọc: 20
Lần chỉnh sửa cuối:
Upvote 0
Chạy thử cái code này nhé
PHP:
Option Explicit
Sub CT()
Dim lr&, i&, j&, k&, rng, res()
lr = Cells(Rows.Count, "H").End(xlUp).Row
rng = Range("A7:H" & lr).Value
ReDim res(1 To UBound(rng), 1 To 4)
Do
    i = i + 1
    If IsNumeric(rng(i, 1)) Then
        j = 0: k = k + 1: res(k, 1) = i
        Do
            j = j + 1
            If rng(i + j, 4) = Range("J6").Value Then res(k, 2) = i + j
            If rng(i + j, 4) = Range("K6").Value Then res(k, 3) = i + j
            If rng(i + j, 4) = Range("L6").Value Then res(k, 4) = i + j
        Loop Until i + j >= UBound(rng) Or IsNumeric(rng(i + j, 1))
    End If
Loop Until i >= UBound(rng)
Range("J7:L10000").ClearContents
For i = 1 To UBound(res)
    If Not IsEmpty(res(i, 2)) Then Cells(res(i, 1) + 6, "J").Formula = "=H" & res(i, 2) + 6
    If Not IsEmpty(res(i, 3)) Then Cells(res(i, 1) + 6, "K").Formula = "=H" & res(i, 3) + 6
    If Not IsEmpty(res(i, 4)) Then Cells(res(i, 1) + 6, "L").Formula = "=H" & res(i, 4) + 6
Next
End Sub
 
Upvote 0
Chạy thử đoạn mã này nhé
PHP:
Clear option option
CT phụ()
Làm mờ lr&, i&, j&, k&, rng, res()
lr = Cells(Rows.Count, "H").End(xlUp).Row
rng = Pham vi("A7:H" & lr).Giá trị
ReDim res(1 Đến UBound(rng), 1 Đến 4)
làm
    tôi = tôi + 1
    If IsNumeric(rng(i, 1)) Thì
        j = 0: k = k + 1: res(k, 1) = i
        làm
            j = j + 1
            If rng(i + j, 4) = Pham vi("J6"). The value Thì res(k, 2) = i + j
            If rng(i + j, 4) = Pham vi("K6"). The value Thì res(k, 3) = i + j
            If rng(i + j, 4) = Pham vi("L6"). The value Thì res(k, 4) = i + j
        Vòng lặp Cho đến khi i + j >= UBound(rng) Or IsNumeric(rng(i + j, 1))
    end if
Vòng lặp cho đến khi i >= UBound(rng)
Phạm vi("J7:L10000").ClearContents
Đối với i = 1 Đến UBound(res)
    If Not IsEmpty(res(i, 2)) Then Cells(res(i, 1) + 6, "J").Formula = "=H" & res(i, 2) + 6
    If Not IsEmpty(res(i, 3)) Then Cells(res(i, 1) + 6, "K").Formula = "=H" & res(i, 3) + 6
    If Not IsEmpty(res(i, 4)) Then Cells(res(i, 1) + 6, "L").Formula = "=H" & res(i, 4) + 6
Kế tiếp
kết thúc ph
[/QUOTE]

Run try this code nhé
PHP:
Tùy chọn rõ ràng
CT phụ()
Làm mờ lr&, i&, j&, k&, rng, res()
lr = Cells(Rows.Count, "H").End(xlUp).Row
rng = Phạm vi("A7:H" & lr).Giá trị
ReDim res(1 Đến UBound(rng), 1 Đến 4)
LÀM
    tôi = tôi + 1
    Nếu IsNumeric(rng(i, 1)) Thì
        j = 0: k = k + 1: res(k, 1) = i
        LÀM
            j = j + 1
            Nếu rng(i + j, 4) = Phạm vi("J6"). Giá trị Thì res(k, 2) = i + j
            Nếu rng(i + j, 4) = Phạm vi("K6"). Giá trị Thì res(k, 3) = i + j
            Nếu rng(i + j, 4) = Phạm vi("L6"). Giá trị Thì res(k, 4) = i + j
        Vòng lặp Cho đến khi i + j >= UBound(rng) Or IsNumeric(rng(i + j, 1))
    kết thúc nếu
Vòng lặp cho đến khi i >= UBound(rng)
Phạm vi("J7:L10000").ClearContents
Đối với i = 1 Đến UBound(res)
    If Not IsEmpty(res(i, 2)) Then Cells(res(i, 1) + 6, "J").Formula = "=H" & res(i, 2) + 6
    If Not IsEmpty(res(i, 3)) Then Cells(res(i, 1) + 6, "K").Formula = "=H" & res(i, 3) + 6
    If Not IsEmpty(res(i, 4)) Then Cells(res(i, 1) + 6, "L").Formula = "=H" & res(i, 4) + 6
Kế tiếp
kết thúc phụ
Anh ơi sao em Alt+F11, copy mã vào, nhấn nút chạy mà nó không chạy cứ đòi nhập tên macro là sao anh nhỉ?
Bài đã được tự động gộp:

Anh ơi sao em Alt+F11 copy code vào nhấn nút chạy mà nó không chạy yêu cầu macro tên là sao anh nhỉ?
Anh ơi em copy thiếu. Em chạy được rồi. Cảm ơn anh nhiều nhé. Làm thế nào để giỏi được như anh anh nhỉ?
Bài đã được tự động gộp:

Anh ơi sao em Alt+F11 copy code vào nhấn nút chạy mà nó không chạy yêu cầu macro tên là sao anh nhỉ?
Bài đã được tự động gộp:


Anh ơi em chép thiếu. Em đã chạy được rồi. Cảm ơn anh nhiều nhé. Làm thế nào để được giỏi như anh anh nhỉ?
Anh

bebo021999 ơi anh hộ em mã cho ví dụ này của em với được ko anh. Em nghiên cứu rồi mà mãi vẫn ko viết được ah. Lấy dữ liệu từ cột L, O, Q sang ngang đó ah. Cảm ơn anh​

 

File đính kèm

  • Nghien cuu.xlsx
    7.6 MB · Đọc: 4
Lần chỉnh sửa cuối:
Upvote 0
Các cột bên phải, bạn chưa phân định rõ cột nào là kết quả từ code.
Bạn delete bớt các cột không dùng, điền tay các kết quả muốn có (1 vài dòng là OK)
 
Upvote 0
Các cột bên phải, bạn chưa xác định cột nào là kết quả từ mã.
Bạn xóa các cột không dùng được, điền các kết quả muốn có vào tay (1 vài dòng là OK)
Anh ơi các cột VL, NC, M là kết quả từ mã đó ah. Nó lấy kết quả dựa vào sự tiềm kiếm giá trị ở cột Thành tiền theo điều kiện tìm kiếm ở Z đấy ah.
Bài đã được tự động gộp:

Anh ơi các cột VL, NC, M là kết quả từ mã đó ah. Nó lấy kết quả dựa vào sự tìm kiếm giá trị tiềm ẩn ở cột Thành tiền theo điều kiện tìm kiếm ở Z đấy ah.
em xin gửi lại file. Sau khi ẩn đi những cột ko cần thiết
Bài đã được tự động gộp:

Anh ơi các cột VL, NC, M là kết quả từ mã đó ah. Nó lấy kết quả dựa vào sự tìm kiếm giá trị tiềm ẩn ở cột Thành tiền theo điều kiện tìm kiếm ở Z đấy ah.
Bài đã được tự động gộp:


em xin gửi lại file. Sau khi ẩn các cột không cần thiết
File này là nâng cao từ file Mấy hôm trước em nhờ anh giúp đấy anh.
 

File đính kèm

  • Nghien cuu.xlsx
    7.6 MB · Đọc: 6
Lần chỉnh sửa cuối:
Upvote 0
Anh ơi các cột VL, NC, M là kết quả từ mã đó ah. Nó lấy kết quả dựa vào sự tiềm kiếm giá trị ở cột Thành tiền theo điều kiện tìm kiếm ở Z đấy ah.
Bài đã được tự động gộp:


em xin gửi lại file. Sau khi ẩn đi những cột ko cần thiết
Bài đã được tự động gộp:


File này là nâng cao từ file Mấy hôm trước em nhờ anh giúp đấy anh.
Anh

bebo021999 bớt chút thời gian nghiên cứu giúp em với anh nhé. Em cảm ơn anh​

Bài đã được tự động gộp:

Anh

bebo021999 bớt chút thời gian nghiên cứu giúp em với anh nhé. Em cảm ơn anh​

Các anh trong diễn đàn GPE có rảnh cùng chung tay giúp em với ah.
 
Upvote 0
Ý của em là muốn đưa các cột thành tiền (Vật liệu, nhân công, máy thi công) được tổng cộng tại các cột K, M, O, Q sang hàng ngang tương ứng với cột VL, NC, M dựa vào điều kiện ở cột Z (Điều kiện này có được dựa vào cột C và Cột F). Mong các bác bớt chút thời gian xử lý giúp em với.
Bài đã được tự động gộp:

Không phải không ai muốn giúp mà có lẽ file nhìn quá khiếp hãi. Do đó, rất khó cho người xem.

Nội 3 cột này đã đá bôm bốp.
Muốn nhận được trợ giúp thì bản thân phải trau chuốt cho yêu cầu của mình. Nên có thêm hình ảnh minh họa cho sản phẩm, không phải ai cũng rảnh mà tải file xuống đâu.
Em viết nhầm là cột L ah. Nó là những cột thành tiền ấy ah
Bài đã được tự động gộp:

Em xin up lại file ah.
 

File đính kèm

  • Nghien cuu.xlsx
    7.6 MB · Đọc: 12
Lần chỉnh sửa cuối:
Upvote 0
Ý của em là muốn đưa các cột thành tiền (Vật liệu, nhân công, máy thi công) được tổng cộng tại các cột K, M, O, Q sang hàng ngang tương ứng với cột VL, NC, M dựa vào điều kiện ở cột Z (Điều kiện này có được dựa vào cột C và Cột F). Mong các bác bớt chút thời gian xử lý giúp em với.
Bài đã được tự động gộp:


Em viết nhầm là cột L ah. Nó là những cột thành tiền ấy ah
Bài đã được tự động gộp:

Em xin up lại file ah.
Kiểm tra lại . .
Mã:
Sub XYZ()
  Dim arr(), a(), res(), sRow&, i&, r&, j&, c&, dj&, tmp$
 
  With Sheets("5.DGCT")
    arr = .Range("C8:Q" & .Cells(Rows.Count, "F").End(xlUp).Row).Value
  End With
  sRow = UBound(arr)
  ReDim a(1 To sRow, 1 To 4)
  res = Array(a, a, a, a)
  On Error Resume Next
  For i = 1 To sRow
    dj = 0
    tmp = Replace(arr(i, 4), " ", "")
    If arr(i, 1) <> Empty Then
      r = i
    ElseIf InStr(1, tmp, "A-") = 1 Then
      dj = 1
    ElseIf arr(i, 5) Like "công" Then
      dj = 2
    ElseIf InStr(1, tmp, "C-") = 1 Then
      dj = 3
    End If
    If dj > 0 Then
      For j = 9 To 15 Step 2
        c = (j - 9) / 2
        res(c)(r, dj) = arr(i, j)
        res(c)(r, 4) = res(c)(r, 4) + arr(i, j)
      Next j
    End If
  Next i
  For j = 0 To 3
    c = j * 4 + 27
    Sheets("5.DGCT").Cells(8, c).Resize(sRow, 3) = res(j)
    'Sheets("5.DGCT").Cells(8, c).Resize(sRow, 4) = res(j) 'Tinh cot tong cong
  Next j
End Sub
 
Upvote 1
Em cảm ơn anh đã giúp đỡ. Về số liệu thì đúng với ý của em rồi anh ah nhưng em mong muốn ở đây là bên kết quả phải có dấu bằng đi kèm nữa cơ ah(Ví dụ AA12=M13). Anh hỗ trợ em tiếp với anh nhé.
 
Upvote 0
...
Anh ơi em copy thiếu. Em chạy được rồi. Cảm ơn anh nhiều nhé. Làm thế nào để giỏi được như anh anh nhỉ?
....
Chưa đến lúc cần phải "giỏi được như anh".
Hiện tại kỹ năng cần học hơn là "Làm thế nào để rút ngắn một đề tài đã 3 tuần chưa đến kết quả"
 
Upvote 0
Em cảm ơn anh đã giúp đỡ. Về số liệu thì đúng với ý của em rồi anh ah nhưng em mong muốn ở đây là bên kết quả phải có dấu bằng đi kèm nữa cơ ah(Ví dụ AA12=M13). Anh hỗ trợ em tiếp với anh nhé.
Chỉnh lại . . .
Mã:
Sub XYZABC()
  Dim sh As Worksheet, rng As Range
  Dim eRow&, i&, r&, j&, c&, dj&, tmp$
 
  Application.ScreenUpdating = False
  Application.Calculation = xlManual
  Set sh = Sheets("5.DGCT")
  eRow = sh.Cells(Rows.Count, "F").End(xlUp).Row
  Set rng = sh.Range("A1:Q" & eRow)
  For j = 27 To 39 Step 4
    sh.Cells(8, j).Resize(eRow - 7, 4).ClearContents
  Next j
On Error Resume Next
  For i = 8 To eRow
    dj = 0
    tmp = Replace(rng(i, 6).Value, " ", "")
    If rng(i, 3) <> Empty Then
      r = i
      For j = 30 To 42 Step 4
        sh.Cells(r, j).Formula = "=" & Cells(r, j - 3).Address(RowAbsolute:=False, ColumnAbsolute:=False) & _
                                  "+" & Cells(r, j - 2).Address(RowAbsolute:=False, ColumnAbsolute:=False) & _
                                  "+" & Cells(r, j - 1).Address(RowAbsolute:=False, ColumnAbsolute:=False)
      Next j
    ElseIf InStr(1, tmp, "A-") = 1 Then
      dj = 1
    ElseIf rng(i, 7) Like "công" Then
      dj = 2
    ElseIf InStr(1, tmp, "C-") = 1 Then
      dj = 3
    End If
    If dj > 0 Then
      For j = 11 To 17 Step 2
        c = (j - 11) * 2 + 26
        sh.Cells(r, c + dj).Formula = "=" & rng(i, j).Address(RowAbsolute:=False, ColumnAbsolute:=False)
      Next j
    End If
  Next i
  Application.ScreenUpdating = True
  Application.Calculation = xlAutomatic
End Sub
 
Upvote 0
Chỉnh lại . . .
Mã:
Sub XYZABC()
  Dim sh As Worksheet, rng As Range
  Dim eRow&, i&, r&, j&, c&, dj&, tmp$
 
  Application.ScreenUpdating = False
  Application.Calculation = xlManual
  Set sh = Sheets("5.DGCT")
  eRow = sh.Cells(Rows.Count, "F").End(xlUp).Row
  Set rng = sh.Range("A1:Q" & eRow)
  For j = 27 To 39 Step 4
    sh.Cells(8, j).Resize(eRow - 7, 4).ClearContents
  Next j
On Error Resume Next
  For i = 8 To eRow
    dj = 0
    tmp = Replace(rng(i, 6).Value, " ", "")
    If rng(i, 3) <> Empty Then
      r = i
      For j = 30 To 42 Step 4
        sh.Cells(r, j).Formula = "=" & Cells(r, j - 3).Address(RowAbsolute:=False, ColumnAbsolute:=False) & _
                                  "+" & Cells(r, j - 2).Address(RowAbsolute:=False, ColumnAbsolute:=False) & _
                                  "+" & Cells(r, j - 1).Address(RowAbsolute:=False, ColumnAbsolute:=False)
      Next j
    ElseIf InStr(1, tmp, "A-") = 1 Then
      dj = 1
    ElseIf rng(i, 7) Like "công" Then
      dj = 2
    ElseIf InStr(1, tmp, "C-") = 1 Then
      dj = 3
    End If
    If dj > 0 Then
      For j = 11 To 17 Step 2
        c = (j - 11) * 2 + 26
        sh.Cells(r, c + dj).Formula = "=" & rng(i, j).Address(RowAbsolute:=False, ColumnAbsolute:=False)
      Next j
    End If
  Next i
  Application.ScreenUpdating = True
  Application.Calculation = xlAutomatic
End Sub
Em cảm ơn anh nhé. Đã xử lý được vấn đề rồi anh ah. Do công việc của em đợt này bận quá nên đưa chủ đề ra nhờ các anh giúp đỡ mà bản thân lại ko bám sát được. Mong các anh thông cảm cho em nhé.
 
Upvote 0
Nhờ được các anh giúp giải quyết được công việc rất là mừng, nhưng khi cảm ơn các anh các anh cứ im lặng thế này làm em thấy tủi thân ghê.
 
Upvote 1
Nhờ được các anh giúp giải quyết được công việc rất là mừng, nhưng khi cảm ơn các anh các anh cứ im lặng thế này làm em thấy tủi thân ghê.
Mình thuộc dạng ít nói, vấn đề đã được xử lý nên mình không nói gì thêm
 
Upvote 0
Nhờ được các anh giúp giải quyết được công việc rất là mừng, nhưng khi cảm ơn các anh các anh cứ im lặng thế này làm em thấy tủi thân ghê.
Có nút Vote bên phải bài viết đó, cám ơn bằng cái đó là các anh mừng rồi nhé. (Như mình vừa vote mẫu cho bạn)
 
Upvote 1
Mình thuộc dạng ít nói, vấn đề đã được xử lý nên mình không nói gì thêm
Ngược lại, tôi thuộc dạng lắm lời. Tuy nhiên tôi chỉ lắm lời khi nên kia là người biết trọng tiếng mẹ đẻ.

Tôi tin là không bao lâu nữa thôi, bạn sẽ thèm muốn đàm thoại một cách thoải mái với loại tiếng Việt mà bạn đã trưởng thành trong nó. Ở môi trường mà chung quanh xài toàn tiếng Anh, bạn sẽ thèm khát được nói chuyện với người Việt. Rổi lớn tuổi hơn, bạn càng tha thiết với tuổi thơ của mình, bạn sẽ cảm thấy ấm áp khi người đối diện không dùng tiếng "tân thời", tiếng Trung bồi, Tây bồi.

Rồi có những ngày... Nhưng mà tôi không nói ra đâu, bạn sẽ trải qua thôi.

Cách duy nhất để bạn tránh được cái nỗi nhớ đau dai dẳng này là bạn phải thật giàu. Khi ấy, việc "hái tiền và đếm tiền" sẽ giúp bạn quên tất cả.
 
Upvote 0
Mình mới qua vài năm, ít giao tiếp vơi người bản xứ vì ngôn ngữ bất đồng :confused:
Phải tự mình cố gắng thôi bạn ạ. Đầu tiên là đưa rước cháu ở trường, tám với phụ huynh. Kế dố là cố gắng vác xác đi mấy buổi họp, buổi thể thao, lại atms với phụ huynh. Nếu nhà bạn ở là loại "white picket fence" thì tìm cách làm quen với hàng xóm, mời mọc ăn bánh uống trà. Nếu loại chung cư thì hơi bô xồ, chịu khó tìm nới chơi được thôi.

Thống kê về phúc lợi xã hội và y tế xã hội cho biết tỷ lệ người lớn tuổi ít ra ngoài tiếp xúc bị bệnh trầm cảm khá cao.
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom