簡體   English   中英

使用VBA從3個電子表格創建具有行,列和值的表格

[英]Using VBA to create a grid from 3 spreadsheets with the row, column, and values

我有三個Excel電子表格。 第一個具有要分配給新excel電子表格的值。 第二個具有數據所屬的列。第三個具有數據所屬的行。

看起來像這樣:

Data Value:
1 5 7 9
2 2 6 8

Column Number:
1 2 3 1
2 3 1 2

Row Number:
1 2 3 2 
4 4 3 1 

我如何結合所有這些信息來創建一個包含以下格式的值的單個電子表格:

         Column
         1  2  3   
   Row
    1    1  8  0       
    2    9  5  0      
    3    6  0  7
    4    0  2  2

我試圖通過在vba中使用循環來做到這一點,但是我是一個初學者,遇到了一些困難。

我知道我需要使用一個循環,該循環針對每次迭代檢查數據應該在其中的行和列。 我只是不確定如何去做。

假設這些是同一工作簿中的不同工作表(如果不是,請創建一個新工作簿並復制工作表)。 我假設在每張紙上使用相同的單元格范圍(例如,在所有3種情況下,A1:D2在第一張紙上具有值,第二張紙上的列號,第三張紙上的行號)。 您可以完全省去VBA,而以使用一些復雜的公式為代價(此出色的文章所啟發: http : //exceluser.com/blog/1043/how-to-create-two-Dimension-lookups-in-excel-formulas .html

步驟1.添加第四張紙,並在A1中添加公式

=CONCATENATE(Sheet3!A1,"_",Sheet2!A1)

並在適當的范圍內復制它(例如A1:D2)。 這將為您提供2_1之類的信息,告訴您工作表1中的相應條目屬於第2行第1列。將該范圍命名為“位置”(“公式”標簽-定義名稱選項)

第2步-確定要保存數據的位置(為簡單起見,我假設它位於工作表4中),然后將行號(1-4)和列號(1-3)添加為標簽。 就我而言,行標簽位於A5:A8中,列標簽位於B4:C4中(請參見下面的屏幕截圖)。 然后在要填充的值的左上角(在我的情況下為B5)中,輸入以下公式(經過適當調整以匹配您的范圍):

=IFERROR(INDIRECT(ADDRESS(SUMPRODUCT(ROW(location)*(location = CONCATENATE($A5, "_",B$4))),SUMPRODUCT(COLUMN(location)*(location = CONCATENATE($A5, "_",B$4))),,,"Sheet1")),0)

並復制到預期范圍內。 注意美元符號-此公式以一種必不可少的方式將行絕對引用和列絕對引用混合在一起。 有點奇怪,它實際上有效:

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM