iT邦幫忙

0

Excel如何把資料依序往下放?

  • 分享至 

  • xImage

https://ithelp.ithome.com.tw/upload/images/20210129/20134808PXVJ7QRuIv.jpg

搜尋條件是"肉類",從"清單(C欄)"的第2個儲存格開始搜尋,
遇到符合的會放在"肉類(A欄)"的第2個,像豬肉會被放在第2個,
各項食品皆已定義好哪個是肉類哪個是蔬菜,

假設D欄"分類"被隱藏,會自動分類"清單",然後把分類結果傳回A欄或B欄

問題就是:1.如何把牛肉放在"肉類(A欄)"的第3個?
2.第3個搜尋到的是豬肉,因為第2個儲存格已經是豬肉,會忽略或覆蓋第2個
3.雞肉放在"肉類(A欄)"的第4個?
4.往下以此類推

Dim i
For i = 2 To 9
If Cells(i, 3) = '肉類' Then
Cells(2, 1) = Cells(i, 3)
End If
Next
該如何修改呢?

抱歉啊!新手無法回應討論...

rogeryao iT邦超人 8 級 ‧ 2021-01-29 11:19:29 檢舉
"各項食品皆已定義好哪個是肉類哪個是蔬菜", 定義在哪個欄位 ?
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
2
海綿寶寶
iT邦大神 1 級 ‧ 2021-01-29 12:30:48
最佳解答

As-Is
https://ithelp.ithome.com.tw/upload/images/20210129/20001787fPBYQKfyJ9.png

To-Be
https://ithelp.ithome.com.tw/upload/images/20210129/20001787kQgClYBNgc.png

darban iT邦新手 5 級 ‧ 2021-01-29 12:54:03 檢舉

好強!有沒有程式碼讓我參考一下呢?我還是初學者

你誤會了
我只是把你的「題目」整理出來給高手看
我沒有「程式碼」
/images/emoticon/emoticon25.gif

微笑 iT邦研究生 5 級 ‧ 2021-01-29 16:05:11 檢舉

www

0
eric_hsu58
iT邦新手 3 級 ‧ 2021-01-29 13:56:53

請使用 海綿寶寶的表格,必須有一行是判別肉類或是蔬菜

i 控制搜尋肉類或是蔬菜
j 是第一 Column 肉類已經寫到第幾格
k 是第二 Column 蔬菜已經寫到第幾格

'--------------------------------------------
Dim i,j,k
j=2
k=2
For i = 2 To 9
If Cells(i, 4) = '肉類' Then
Cells(j, 1) = Cells(i, 3)
j = j + 1
Else
Cells(k, 1) = Cells(i, 3)
k = k + 1
End If
Next

1
rogeryao
iT邦超人 8 級 ‧ 2021-01-29 16:22:36

我不是高手,但是有「程式碼」......

Private Sub CommandButton1_Click()
Dim x, y As Integer
x = 2
y = 2
RecordCount = Worksheets("工作表1").Range("C65535").End(xlUp).Row

For i = 2 To RecordCount
  If Cells(i, 4) = "肉類" Then
    Cells(x, 1) = Cells(i, 3)
    x = x + 1
  ElseIf Cells(i, 4) = "蔬菜類" Then
    Cells(y, 2) = Cells(i, 3)
    y = y + 1
  End If
Next

'工作表1 A 欄位去除重複
Worksheets("工作表1").Range("A2:A" & RecordCount).RemoveDuplicates Columns:=1, Header:=xlNo
'工作表1 B 欄位去除重複
Worksheets("工作表1").Range("B2:B" & RecordCount).RemoveDuplicates Columns:=1, Header:=xlNo

'排序:工作表1 A 欄位
ActiveWorkbook.Worksheets("工作表1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("工作表1").Sort.SortFields.Add Key:=Range("A2:A" & RecordCount), _
    SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("工作表1").Sort
    .SetRange Range("A2:A" & RecordCount)
    .Header = xlGuess
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With

'排序:工作表1 B 欄位
ActiveWorkbook.Worksheets("工作表1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("工作表1").Sort.SortFields.Add Key:=Range("B2:B" & RecordCount), _
    SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("工作表1").Sort
    .SetRange Range("B2:B" & RecordCount)
    .Header = xlGuess
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With

Range("A2:A" & RecordCount).Select
With Selection
    .HorizontalAlignment = xlCenter '中間對齊
End With

Range("B2:B" & RecordCount).Select
With Selection
    .HorizontalAlignment = xlCenter '中間對齊
End With

End Sub

https://ithelp.ithome.com.tw/upload/images/20210129/200850210EHseuxmcj.png

darban iT邦新手 5 級 ‧ 2021-01-29 18:37:33 檢舉

多謝啦!對我幫助非常大,簡單易懂

1
froce
iT邦大師 1 級 ‧ 2021-01-29 16:33:38

我也不是大師,但是我覺得這個用公式做就好了。

=IF(ISNA(MATCH(C2,$A$2:$A$4,0)),B1,A1)

我要發表回答

立即登入回答