=INDEX(营运数据库_非新店!$A:$FI,MATCH($D28,营运数据库_非新店!$A:$FI,0),MATCH($E27,$1:$1,0)) 目标数据源在营运数据库_非新店表的A到FI列 ,这个公式没有匹配出值,有什么问题呢
时间: 2023-12-02 08:02:56 浏览: 19
根据您提供的公式和描述,可能出现以下问题:
1. 公式中的$D28和$E27是绝对引用,如果这些单元格被删除或移动,公式将无法正确匹配数据。
2. MATCH函数的第二个参数中,$D28在营运数据库_非新店的A到FI列中查找,如果它不在这个范围内,MATCH函数将返回#N/A错误。
3. MATCH函数的第三个参数中,$E27在第一行中查找,如果它不在第一行中,MATCH函数将返回#N/A错误。
4. 如果MATCH函数的任何一个参数返回错误值,INDEX函数也会返回错误值。
您可以检查这些问题,并尝试修复它们以解决公式无法匹配值的问题。
相关问题
module test_bench (clk, data ); output clk; reg clk1; output data; wire data; wire [31:0] data_in; assign data_in = 32'h000fff00; reg [5:0] addr; reg clk_en; assign clk= clk1&clk_en&!addr[5]; initial begin clk1=1'b0; //data=1'b0; addr=5'b0; clk_en=1'b0; #2000 clk_en=1'b1; #100000 $finish; end always #50 clk1=~clk1; always @ (posedge clk ) begin addr <= addr+1; end assign data= data_in[addr[4:0]]; /*always @ (posedge clk) begin case(addr[4:0]) 5'd0: data <= data_in[31]; 5'd1: data <= data_in[30]; 5'd2: data <= data_in[29]; 5'd3: data <= data_in[28]; 5'd4: data <= data_in[27]; 5'd5: data <= data_in[26]; 5'd6: data <= data_in[25]; 5'd7: data <= data_in[24]; 5'd8: data <= data_in[23]; 5'd9: data <= data_in[22]; 5'd10: data <= data_in[21]; 5'd11: data <= data_in[20]; 5'd12: data <= data_in[19]; 5'd13: data <= data_in[18]; 5'd14: data <= data_in[17]; 5'd15: data <= data_in[16]; 5'd16: data <= data_in[15]; 5'd17: data <= data_in[14]; 5'd18: data <= data_in[13]; 5'd19: data <= data_in[12]; 5'd20: data <= data_in[11]; 5'd21: data <= data_in[10]; 5'd22: data <= data_in[9]; 5'd23: data <= data_in[8]; 5'd24: data <= data_in[7]; 5'd25: data <= data_in[6]; 5'd26: data <= data_in[5]; 5'd27: data <= data_in[4]; 5'd28: data <= data_in[3]; 5'd29: data <= data_in[2]; 5'd30: data <= data_in[1]; 5'd31: data <= data_in[0]; default: data <= 1'b0; endcase end */ endmodule
这段代码实现了一个简单的 Verilog testbench,用于测试某个模块。模块的输入是一个时钟信号 clk 和一个数据信号 data。在 testbench 中,时钟信号 clk 被定义为输出,数据信号 data 被定义为输出。同时,也定义了一个 32 位宽度的数据线 data_in,用于存储输入数据。该模块的功能是按顺序输出 data_in 中的数据,直到所有的数据都被输出完毕。
在 testbench 中,时钟 clk1 通过 always 块以 50 个时钟周期的间隔进行翻转。同时,addr 初始值为 0,clk_en 初始值为 0。当时钟信号 clk_en 被设置为 1 时,addr 以每个时钟周期加 1 的方式递增,直到 addr 的最高位(即 addr[5])为 1,表明所有的数据都已被读取。在每个时钟上升沿时,data 被赋值为 data_in 中对应地址的数据。在这里,使用了 assign 语句实现了这个功能。
注释掉的代码块是一种不同的实现方式,使用了 case 语句来对每个地址进行显式的分配。这种方法不如 assign 语句方便和简单,但也可以实现相同的功能。
可以帮我对以下SAS代码进行注释吗?data combined1a; set combined1a1; format sv_js today date9.; x=input(COMPRESS(SCAN(Instance_Name,1,'D'),'','KD'),best.); if Folder_Name='Additional Cycles' then x=input(ADCNUM,best.); if Instance_Name='C1D1' then sv_js=EXSTDTCn_f+1; else if Instance_Name='C1D8' then sv_js=EXSTDTCn_f+7; else if Instance_Name='C1D15' then sv_js=EXSTDTCn_f+14; else if Instance_Name='C1D21' then sv_js=EXSTDTCn_f+20; else if Instance_Name='C1D22' then sv_js=EXSTDTCn_f+21; else if Instance_Name='C1D28' then sv_js=EXSTDTCn_f+27; if x>=2 then do; IF EPOCHTYP IN ('剂量探索研究' 'PK扩增入组研究' '食物影响研究') OR EPOCHTP IN ('剂量递增研究' '剂量扩展研究(PK)' '食物影响研究' '剂量扩展研究(密集药代动力学研究)') THEN sv_js = EXSTDTCn_f+(28+(x-1)*21-1)+3; IF EPOCHTYP IN ('第一阶段扩大入组研究' '第二阶段扩大入组研究') OR EPOCHTP IN ('剂量扩展研究(非PK)' '剂量延申研究' '剂量扩展研究(非密集药代动力学研究)') THEN sv_js = EXSTDTCn_f+(x*21-1)+3; end; if Instance_Name='结束治疗' then sv_js=EXENDTCn_1+3; if Instance_Name='结束治疗后4周' then sv_js=EXENDTCn_1+30; sv_js=sv_js+21;
当我为您注释以下SAS代码时,请注意以下几点:
1. `data combined1a;` - 创建一个名为`combined1a`的数据集。
2. `set combined1a1;` - 从名为`combined1a1`的数据集中读取数据。
3. `format sv_js today date9.;` - 设置变量`sv_js`的格式为日期格式(date9.)。
4. `x=input(COMPRESS(SCAN(Instance_Name,1,'D'),'','KD'),best.);` - 从变量`Instance_Name`中提取以字母'D'开头的第一个单词,并将其转换为数值型变量`x`。
5. `if Folder_Name='Additional Cycles' then x=input(ADCNUM,best.);` - 如果变量`Folder_Name`的值为'Additional Cycles',则将变量`ADCNUM`转换为数值型变量`x`。
6. `if Instance_Name='C1D1' then sv_js=EXSTDTCn_f+1;` - 如果变量`Instance_Name`的值为'C1D1',则将变量`sv_js`的值设置为`EXSTDTCn_f+1`。
7. `else if Instance_Name='C1D8' then sv_js=EXSTDTCn_f+7;` - 如果变量`Instance_Name`的值为'C1D8',则将变量`sv_js`的值设置为`EXSTDTCn_f+7`。
8. `else if Instance_Name='C1D15' then sv_js=EXSTDTCn_f+14;` - 如果变量`Instance_Name`的值为'C1D15',则将变量`sv_js`的值设置为`EXSTDTCn_f+14`。
9. `else if Instance_Name='C1D21' then sv_js=EXSTDTCn_f+20;` - 如果变量`Instance_Name`的值为'C1D21',则将变量`sv_js`的值设置为`EXSTDTCn_f+20`。
10. `else if Instance_Name='C1D22' then sv_js=EXSTDTCn_f+21;` - 如果变量`Instance_Name`的值为'C1D22',则将变量`sv_js`的值设置为`EXSTDTCn_f+21`。
11. `else if Instance_Name='C1D28' then sv_js=EXSTDTCn_f+27;` - 如果变量`Instance_Name`的值为'C1D28',则将变量`sv_js`的值设置为`EXSTDTCn_f+27`。
12. `if x>=2 then do;` - 如果变量`x`的值大于等于2,则执行以下操作。
13. `IF EPOCHTYP IN ('剂量探索研究' 'PK扩增入组研究' '食物影响研究') OR EPOCHTP IN ('剂量递增研究' '剂量扩展研究(PK)' '食物影响研究' '剂量扩展研究(密集药代动力学研究)') THEN sv_js = EXSTDTCn_f+(28+(x-1)*21-1)+3;` - 如果变量`EPOCHTYP`的值在指定的列表中,或者变量`EPOCHTP`的值在指定的列表中,则将变量`sv_js`的值设置为`EXSTDTCn_f+(28+(x-1)*21-1)+3`。
14. `IF EPOCHTYP IN ('第一阶段扩大入组研究' '第二阶段扩大入组研究') OR EPOCHTP IN ('剂量扩展研究(非PK)' '剂量延申研究' '剂量扩展研究(非密集药代动力学研究)') THEN sv_js = EXSTDTCn_f+(x*21-1)+3;` - 如果变量`EPOCHTYP`的值在指定的列表中,或者变量`EPOCHTP`的值在指定的列表中,则将变量`sv_js`的值设置为`EXSTDTCn_f+(x*21-1)+3`。
15. `if Instance_Name='结束治疗' then sv_js=EXENDTCn_1+3;` - 如果变量`Instance_Name`的值为'结束治疗',则将变量`sv_js`的值设置为`EXENDTCn_1+3`。
16. `if Instance_Name='结束治疗后4周' then sv_js=EXENDTCn_1+30;` - 如果变量`Instance_Name`的值为'结束治疗后4周',则将变量`sv_js`的值设置为`EXENDTCn_1+30`。
17. `sv_js=sv_js+21;` - 将变量`sv_js`的值增加21。
希望这些注释能帮助您理解代码的功能和逻辑。如果还有其他问题,请随时提问。