使用公式按条件将数据从一张纸复制到另一张纸

时间:2018-08-26 14:56:51

标签: arrays excel

我有两张纸的Excel工作簿。第一页包含两列: || ID ||标志||

我想做的是仅将标记值为1的ID复制到另一张纸上。我知道如何使用IF语句执行此操作,但是这在行中留下了不符合条件的空格。我已经找到了使用VBA进行操作的大量方法,但是我想避免仅使用公式来使用VBA。我感觉这可以通过使用数组来实现,但是我对它们并不自信。

任何帮助表示赞赏。

BJR

1 个答案:

答案 0 :(得分:0)

在第二张纸上,从1开始创建A列“第N个匹配项”,从B列创建“ ID”。 在B列中输入此公式以提取ID号。

public class MainActivity extends AppCompatActivity {

    private static final String TAG = MainActivity.class.getSimpleName();

    //class variables
    private static final long COUNT_DOWN_TICKS = 100l;
    private static final long COUNT_DOWN_FINISH = 5000l;
    private long countdownElapsed = 0l;
    private Handler mCountDownHandler = new Handler();
    private Button next_button;
    private TextView timer;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // you must compensate for the actual layout for your activity
        setContentView(R.layout.activity_main);


        // you must compensate for the actual id of the TextView
        timer = findViewById(R.id.tvTimer);

        // you must compensate for the actual id of the Button
        next_button = findViewById(R.id.btnNext);
        next_button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startCountDown();
            }
        });
    }

    private void startCountDown() {
        try {
            countdownElapsed = 0l;
            next_button.setEnabled(false);
            displayCountDown();
            mCountDownHandler.postDelayed(mCountDownRunnable, COUNT_DOWN_TICKS);
        }
        catch (Exception ex){
            Log.e(TAG, ex.getMessage());
        }
    }

    private Runnable mCountDownRunnable = new Runnable() {
        @Override
        public void run() {
            countdownElapsed = countdownElapsed + COUNT_DOWN_TICKS;

            if(countdownElapsed >= COUNT_DOWN_FINISH){
                releaseCountDownHandler();
                next_button.setEnabled(true);
            }
            else{
                mCountDownHandler.postDelayed(mCountDownRunnable, COUNT_DOWN_TICKS);
            }

            long secFull = countdownElapsed % 1000;
            if(secFull == 0){
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        displayCountDown();
                    }
                });
            }
        }
    };

    private void releaseCountDownHandler() {
        try {
            if(mCountDownRunnable != null) {
                mCountDownHandler.removeCallbacks(mCountDownRunnable);
            }
        }
        catch (Exception ex){
            Log.e(TAG, ex.getMessage());
        }
    }


    private void displayCountDown(){
        long t = (COUNT_DOWN_FINISH - countdownElapsed)/1000;
        String myTime = String.valueOf(t);
        timer.setText(myTime); 
    }   

}

Sheet1列A是您的ID号。 Sheet1列B是您的标志列,该公式检查是否满足此条件。然后最后一部分“ Sheet2!A2”告诉公式要显示的第N个匹配项。

当您下拉公式时,它会显示第一,第二,第三匹配等,没有空格。

编辑后无需vba即可回答。