neokao wrote:
我想把某欄位的值,轉成有"該數值"列的1,例如A1是80,則我想在C91到C170都填成"1",亦即會轉成80列的1,然後再讀A2(例如是5),則在那80列1的下面再加5列的0 (在C171到C175),
看似簡單,可是我找不到相關的function?
1. 如果不用vba, 小弟只想得到"被動"更新的方法, 也就是每次都要把公式重新貼上一次
把以下公式貼滿C:C
=IF(ROW() > 90, IF(ROW() <= ($A$1+2), 1, IF(ROW() <= ($A$2+$A$1+90), 0, "")), "")
當然也可以把90寫在A3, 但這方法有點笨, 不夠自動化.
2. 自動變更, 當A1或A2的值改變時, C欄會自動更新, 這只想到用VBA來做
(a) 開啟Visual Basic 編輯器, 在"工具"->"巨集"裡.
(b) 在左側上方窗格中, 點選要放此功能的sheet, (假設是Sheet1)
(c) 按右鍵"檢視程式碼", 在程式碼窗格上方的兩個下拉式選單中, 左邊選"worksheet", 右邊選"change"
應該就會自動出現以下程式碼
Private Sub Worksheet_Change(ByVal Target As Range)
End Sub
(d) 在上述函式中填入以下程式碼
Dim rIndex, cIndex, mCol, mCol2, sr As Integer
Dim i, j As Integer
rIndex = Target.Row
cIndex = Target.Column
mCol = 0
mCol2 = 0
sr = 90 ' 如果不是從C91開始, 請修改這個數字
If ((rIndex = 1 Or rIndex = 2) And cIndex = 1) Then
mCol = Cells(1, 1).Value
mCol2 = Cells(2, 1).Value
End If
If (mCol > 0) Then
For i = 1 To mCol
Cells(i + sr, 3).Value = 1
Next
End If
If (mCol2 > 0) Then
j = Cells(1, 1).Value
For i = 1 To mCol2
Cells(j + i + sr, 3).Value = 0
Next
End If
(e)儲存, 然後把編輯器關掉, 回到EXCEL視窗中, 去修改A1或A2的值, 應該就會自己更新了

請問有人知道這種狀況有沒有解呢?
表A最左欄放公司名稱,
第二欄第三欄依序是各公司的月進貨量,像是
______________________(表A)
-----Jan Feb March ...
A公司 1 7
B公司 6 7
C公司 8 7
__________________________
如果今天拿到當月的資料表B(像是↓),
______________________(表B)
------Apr ...
Y公司 7
X公司 9
B公司 3
__________________________
今天想要把表B整合進前面那張資料表,
朋友說用VLOOKUP就好了,
可是有個問題,就是每個月拿到的表B中,
每個公司順序不一定,
而且表B裡的公司表A不一定有
這樣有辦法讓表B自動新增到表A上去嗎?



























































































