Discussion:
請問如何判斷儲存格所在的位置
(时间太久无法回复)
TW1023
2004-12-22 08:35:03 UTC
Permalink
如題,

請問我要將 txt 的資料轉成access可用的資料,txt 的資料為每日報表,僅需擷取部份資料,且其txt格式位置並不完全相同.

我想先將 txt 匯入excel表格中, 我想由 excel 擷取需要的資料,但須判斷我所需資料位置:
先判斷所需資料的位置,所以使用
sheet A1儲存格中 if(sheet2!A5="日報",5,sheet2!A6="日報",6,7)
sheet A2 儲存格 if(A1="5",sheet2!A6,A1="6",sheet2!A7,sheet2!A8)
A3 儲存格 if(A1="5",sheet2!A7,A1="6",sheet2!A8,sheet2!A9)
......

可是這樣應不是正確的使用方式,是否有函數或vba的方式可由迴圈判斷特定字串位置(及其儲存格編號),以利擷取所需資料;另請問,可否藉由函數或VBA將資料存入指定(特定)的儲存格中...謝謝!!

93/12/22



-
REX_L
jbsheu
2004-12-22 13:47:06 UTC
Permalink
您好:
您所描述的IF公式有問題,IF函數只有三個參數。所以我猜想您的公式應該是:
=IF(Sheet2!A5="日報",5,IF(Sheet2!A6="日報",6,7))
判斷日報是在A5(傳回5)或是A6(傳回6)或是其他(傳回7)
接下來的值就是從日報所在地的下一列開始存取。
如果是這樣的話,建議使用下列公式:
假設標題日報可能落在Sheet2的A1:A100的範圍,先定義這個範圍的名稱為Data。則可以先用下列公式找出日報的位址填入Sheet1的A1
=ADDRESS(MATCH("日報",data,0),1)
得到的結果會是$A$5,$A$6或$A$7等等。
A2之後則直接取出這個位址的下一列的值,公式為:
=INDIRECT(ADDRESS(MATCH("日報",data,0)+ROW()-1,1,1,TRUE,"sheet2"))
這裡用Row()-1是為了要將公式往下填滿:如果是在A2,結果就是原來的列數加1,若是A3,結果就是原來的列數加2。將公式往下填滿即可得到所有的結果。

許進標

"TW1023" 來函:
Post by TW1023
如題,
請問我要將 txt 的資料轉成access可用的資料,txt 的資料為每日報表,僅需擷取部份資料,且其txt格式位置並不完全相同.
先判斷所需資料的位置,所以使用
sheet A1儲存格中 if(sheet2!A5="日報",5,sheet2!A6="日報",6,7)
sheet A2 儲存格 if(A1="5",sheet2!A6,A1="6",sheet2!A7,sheet2!A8)
A3 儲存格 if(A1="5",sheet2!A7,A1="6",sheet2!A8,sheet2!A9)
......
可是這樣應不是正確的使用方式,是否有函數或vba的方式可由迴圈判斷特定字串位置(及其儲存格編號),以利擷取所需資料;另請問,可否藉由函數或VBA將資料存入指定(特定)的儲存格中...謝謝!!
93/12/22
-
REX_L
TW1023
2004-12-22 15:07:05 UTC
Permalink
謝謝您!您所說的正是我所需的,但因您的示範有些東西(指令)是我沒用過的,我會先看看如有不懂另再請教,謝謝!!
Post by jbsheu
您好:
您所描述的IF公式有問題,IF函數只有三個參數。所以我猜想您的公式應該是:
=IF(Sheet2!A5="日報",5,IF(Sheet2!A6="日報",6,7))
判斷日報是在A5(傳回5)或是A6(傳回6)或是其他(傳回7)
接下來的值就是從日報所在地的下一列開始存取。
如果是這樣的話,建議使用下列公式:
假設標題日報可能落在Sheet2的A1:A100的範圍,先定義這個範圍的名稱為Data。則可以先用下列公式找出日報的位址填入Sheet1的A1
=ADDRESS(MATCH("日報",data,0),1)
得到的結果會是$A$5,$A$6或$A$7等等。
A2之後則直接取出這個位址的下一列的值,公式為:
=INDIRECT(ADDRESS(MATCH("日報",data,0)+ROW()-1,1,1,TRUE,"sheet2"))
這裡用Row()-1是為了要將公式往下填滿:如果是在A2,結果就是原來的列數加1,若是A3,結果就是原來的列數加2。將公式往下填滿即可得到所有的結果。
許進標
"TW1023" 來函:
Post by TW1023
如題,
請問我要將 txt 的資料轉成access可用的資料,txt 的資料為每日報表,僅需擷取部份資料,且其txt格式位置並不完全相同.
先判斷所需資料的位置,所以使用
sheet A1儲存格中 if(sheet2!A5="日報",5,sheet2!A6="日報",6,7)
sheet A2 儲存格 if(A1="5",sheet2!A6,A1="6",sheet2!A7,sheet2!A8)
A3 儲存格 if(A1="5",sheet2!A7,A1="6",sheet2!A8,sheet2!A9)
......
可是這樣應不是正確的使用方式,是否有函數或vba的方式可由迴圈判斷特定字串位置(及其儲存格編號),以利擷取所需資料;另請問,可否藉由函數或VBA將資料存入指定(特定)的儲存格中...謝謝!!
93/12/22
-
REX_L
TW1023
2004-12-22 15:39:07 UTC
Permalink
抱歉!您說的定義範圍名稱為Data部份要如何作業?
Post by jbsheu
您好:
您所描述的IF公式有問題,IF函數只有三個參數。所以我猜想您的公式應該是:
=IF(Sheet2!A5="日報",5,IF(Sheet2!A6="日報",6,7))
判斷日報是在A5(傳回5)或是A6(傳回6)或是其他(傳回7)
接下來的值就是從日報所在地的下一列開始存取。
如果是這樣的話,建議使用下列公式:
假設標題日報可能落在Sheet2的A1:A100的範圍,先定義這個範圍的名稱為Data。則可以先用下列公式找出日報的位址填入Sheet1的A1
=ADDRESS(MATCH("日報",data,0),1)
得到的結果會是$A$5,$A$6或$A$7等等。
A2之後則直接取出這個位址的下一列的值,公式為:
=INDIRECT(ADDRESS(MATCH("日報",data,0)+ROW()-1,1,1,TRUE,"sheet2"))
這裡用Row()-1是為了要將公式往下填滿:如果是在A2,結果就是原來的列數加1,若是A3,結果就是原來的列數加2。將公式往下填滿即可得到所有的結果。
許進標
"TW1023" 來函:
Post by TW1023
如題,
請問我要將 txt 的資料轉成access可用的資料,txt 的資料為每日報表,僅需擷取部份資料,且其txt格式位置並不完全相同.
先判斷所需資料的位置,所以使用
sheet A1儲存格中 if(sheet2!A5="日報",5,sheet2!A6="日報",6,7)
sheet A2 儲存格 if(A1="5",sheet2!A6,A1="6",sheet2!A7,sheet2!A8)
A3 儲存格 if(A1="5",sheet2!A7,A1="6",sheet2!A8,sheet2!A9)
......
可是這樣應不是正確的使用方式,是否有函數或vba的方式可由迴圈判斷特定字串位置(及其儲存格編號),以利擷取所需資料;另請問,可否藉由函數或VBA將資料存入指定(特定)的儲存格中...謝謝!!
93/12/22
-
REX_L
jbsheu
2004-12-23 02:53:06 UTC
Permalink
您好:
您可以先用滑鼠選取Sheet2的A1:A100,然後點選 插入/名稱/定義 指令,設定這個範圍的名稱為Data。
定義名稱的目的是為了避免在複製公式時,預設的範圍可能會跑掉。例如第一個公式為A1:A100,第二個公式變為A2:A101。

許進標

"TW1023" 來函:
Post by TW1023
抱歉!您說的定義範圍名稱為Data部份要如何作業?
Post by jbsheu
您好:
您所描述的IF公式有問題,IF函數只有三個參數。所以我猜想您的公式應該是:
=IF(Sheet2!A5="日報",5,IF(Sheet2!A6="日報",6,7))
判斷日報是在A5(傳回5)或是A6(傳回6)或是其他(傳回7)
接下來的值就是從日報所在地的下一列開始存取。
如果是這樣的話,建議使用下列公式:
假設標題日報可能落在Sheet2的A1:A100的範圍,先定義這個範圍的名稱為Data。則可以先用下列公式找出日報的位址填入Sheet1的A1
=ADDRESS(MATCH("日報",data,0),1)
得到的結果會是$A$5,$A$6或$A$7等等。
A2之後則直接取出這個位址的下一列的值,公式為:
=INDIRECT(ADDRESS(MATCH("日報",data,0)+ROW()-1,1,1,TRUE,"sheet2"))
這裡用Row()-1是為了要將公式往下填滿:如果是在A2,結果就是原來的列數加1,若是A3,結果就是原來的列數加2。將公式往下填滿即可得到所有的結果。
許進標
"TW1023" 來函:
Post by TW1023
如題,
請問我要將 txt 的資料轉成access可用的資料,txt 的資料為每日報表,僅需擷取部份資料,且其txt格式位置並不完全相同.
先判斷所需資料的位置,所以使用
sheet A1儲存格中 if(sheet2!A5="日報",5,sheet2!A6="日報",6,7)
sheet A2 儲存格 if(A1="5",sheet2!A6,A1="6",sheet2!A7,sheet2!A8)
A3 儲存格 if(A1="5",sheet2!A7,A1="6",sheet2!A8,sheet2!A9)
......
可是這樣應不是正確的使用方式,是否有函數或vba的方式可由迴圈判斷特定字串位置(及其儲存格編號),以利擷取所需資料;另請問,可否藉由函數或VBA將資料存入指定(特定)的儲存格中...謝謝!!
93/12/22
-
REX_L
TW1023
2004-12-23 04:13:04 UTC
Permalink
了解!謝謝您!!
Post by jbsheu
您好:
您可以先用滑鼠選取Sheet2的A1:A100,然後點選 插入/名稱/定義 指令,設定這個範圍的名稱為Data。
定義名稱的目的是為了避免在複製公式時,預設的範圍可能會跑掉。例如第一個公式為A1:A100,第二個公式變為A2:A101。
許進標
"TW1023" 來函:
Post by TW1023
抱歉!您說的定義範圍名稱為Data部份要如何作業?
Post by jbsheu
您好:
您所描述的IF公式有問題,IF函數只有三個參數。所以我猜想您的公式應該是:
=IF(Sheet2!A5="日報",5,IF(Sheet2!A6="日報",6,7))
判斷日報是在A5(傳回5)或是A6(傳回6)或是其他(傳回7)
接下來的值就是從日報所在地的下一列開始存取。
如果是這樣的話,建議使用下列公式:
假設標題日報可能落在Sheet2的A1:A100的範圍,先定義這個範圍的名稱為Data。則可以先用下列公式找出日報的位址填入Sheet1的A1
=ADDRESS(MATCH("日報",data,0),1)
得到的結果會是$A$5,$A$6或$A$7等等。
A2之後則直接取出這個位址的下一列的值,公式為:
=INDIRECT(ADDRESS(MATCH("日報",data,0)+ROW()-1,1,1,TRUE,"sheet2"))
這裡用Row()-1是為了要將公式往下填滿:如果是在A2,結果就是原來的列數加1,若是A3,結果就是原來的列數加2。將公式往下填滿即可得到所有的結果。
許進標
"TW1023" 來函:
Post by TW1023
如題,
請問我要將 txt 的資料轉成access可用的資料,txt 的資料為每日報表,僅需擷取部份資料,且其txt格式位置並不完全相同.
先判斷所需資料的位置,所以使用
sheet A1儲存格中 if(sheet2!A5="日報",5,sheet2!A6="日報",6,7)
sheet A2 儲存格 if(A1="5",sheet2!A6,A1="6",sheet2!A7,sheet2!A8)
A3 儲存格 if(A1="5",sheet2!A7,A1="6",sheet2!A8,sheet2!A9)
......
可是這樣應不是正確的使用方式,是否有函數或vba的方式可由迴圈判斷特定字串位置(及其儲存格編號),以利擷取所需資料;另請問,可否藉由函數或VBA將資料存入指定(特定)的儲存格中...謝謝!!
93/12/22
-
REX_L
继续阅读narkive:
Loading...