我是Excel VBA的新手。我需要使用以下vlookup公式在excel工作表中执行vlookup:
=INT(IFERROR(VLOOKUP(A:A,[sheet.xls]Sheet1!B:F,5,FALSE),0))
谁能指导我使用VBA来应用此vlookup
答案 0 :(得分:0)
基本方法:
public class MainActivity extends AppCompatActivity {
private SimpleExoPlayer exoPlayer;
private ExoPlayer.EventListener eventListener = new ExoPlayer.EventListener() {
@Override
public void onTimelineChanged(Timeline timeline, Object manifest) {
Log.i(TAG,"onTimelineChanged");
}
@Override
public void onTracksChanged(TrackGroupArray trackGroups, TrackSelectionArray trackSelections) {
Log.i(TAG,"onTracksChanged");
}
@Override
public void onLoadingChanged(boolean isLoading) {
Log.i(TAG,"onLoadingChanged");
}
@Override
public void onPlayerStateChanged(boolean playWhenReady, int playbackState) {
Log.i(TAG,"onPlayerStateChanged: playWhenReady = "+String.valueOf(playWhenReady)
+" playbackState = "+playbackState);
switch (playbackState){
case ExoPlayer.STATE_ENDED:
Log.i(TAG,"Playback ended!");
//Stop playback and return to start position
setPlayPause(false);
exoPlayer.seekTo(0);
break;
case ExoPlayer.STATE_READY:
Log.i(TAG,"ExoPlayer ready! pos: "+exoPlayer.getCurrentPosition()
+" max: "+stringForTime((int)exoPlayer.getDuration()));
setProgress();
break;
case ExoPlayer.STATE_BUFFERING:
Log.i(TAG,"Playback buffering!");
break;
case ExoPlayer.STATE_IDLE:
Log.i(TAG,"ExoPlayer idle!");
break;
}
}
@Override
public void onPlayerError(ExoPlaybackException error) {
Log.i(TAG,"onPlaybackError: "+error.getMessage());
}
@Override
public void onPositionDiscontinuity() {
Log.i(TAG,"onPositionDiscontinuity");
}
};
private SeekBar seekPlayerProgress;
private Handler handler;
private ImageButton btnPlay;
private TextView txtCurrentTime, txtEndTime;
private boolean isPlaying = false;
private static final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
prepareExoPlayerFromURL(Uri.parse("https://firebasestorage.googleapis.com/v0/b/musyc-f264f.appspot.com/o/Karone-Okarone-Minar-Rahman-Official-Music-Video-Eagle-Music.mp3?alt=media&token=a40ed28a-2970-4160-ac1d-33881e34253a"));
}
private void prepareExoPlayerFromURL(Uri uri){
TrackSelector trackSelector = new DefaultTrackSelector();
LoadControl loadControl = new DefaultLoadControl();
exoPlayer = ExoPlayerFactory.newSimpleInstance(this, trackSelector, loadControl);
DefaultDataSourceFactory dataSourceFactory = new DefaultDataSourceFactory(this, Util.getUserAgent(this, "exoplayer2example"), null);
ExtractorsFactory extractorsFactory = new DefaultExtractorsFactory();
MediaSource audioSource = new ExtractorMediaSource(uri, dataSourceFactory, extractorsFactory, null, null);
exoPlayer.addListener(eventListener);
exoPlayer.prepare(audioSource);
initMediaControls();
}
private void initMediaControls() {
initPlayButton();
initSeekBar();
initTxtTime();
}
private void initPlayButton() {
btnPlay = (ImageButton) findViewById(R.id.btnPlay);
btnPlay.requestFocus();
btnPlay.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
setPlayPause(!isPlaying);
}
});
}
/**
* Starts or stops playback. Also takes care of the Play/Pause button toggling
* @param play True if playback should be started
*/
private void setPlayPause(boolean play){
isPlaying = play;
exoPlayer.setPlayWhenReady(play);
if(!isPlaying){
btnPlay.setImageResource(android.R.drawable.ic_media_play);
}else{
setProgress();
btnPlay.setImageResource(android.R.drawable.ic_media_pause);
}
}
private void initTxtTime() {
txtCurrentTime = (TextView) findViewById(R.id.time_current);
txtEndTime = (TextView) findViewById(R.id.player_end_time);
}
private String stringForTime(int timeMs) {
StringBuilder mFormatBuilder;
Formatter mFormatter;
mFormatBuilder = new StringBuilder();
mFormatter = new Formatter(mFormatBuilder, Locale.getDefault());
int totalSeconds = timeMs / 1000;
int seconds = totalSeconds % 60;
int minutes = (totalSeconds / 60) % 60;
int hours = totalSeconds / 3600;
mFormatBuilder.setLength(0);
if (hours > 0) {
return mFormatter.format("%d:%02d:%02d", hours, minutes, seconds).toString();
} else {
return mFormatter.format("%02d:%02d", minutes, seconds).toString();
}
}
private void setProgress() {
seekPlayerProgress.setProgress(0);
seekPlayerProgress.setMax((int) exoPlayer.getDuration()/1000);
txtCurrentTime.setText(stringForTime((int)exoPlayer.getCurrentPosition()));
txtEndTime.setText(stringForTime((int)exoPlayer.getDuration()));
if(handler == null)handler = new Handler();
//Make sure you update Seekbar on UI thread
handler.post(new Runnable() {
@Override
public void run() {
if (exoPlayer != null && isPlaying) {
seekPlayerProgress.setMax((int) exoPlayer.getDuration()/1000);
int mCurrentPosition = (int) exoPlayer.getCurrentPosition() / 1000;
seekPlayerProgress.setProgress(mCurrentPosition);
txtCurrentTime.setText(stringForTime((int)exoPlayer.getCurrentPosition()));
txtEndTime.setText(stringForTime((int)exoPlayer.getDuration()));
handler.postDelayed(this, 1000);
}
}
});
}
private void initSeekBar() {
seekPlayerProgress = (SeekBar) findViewById(R.id.mediacontroller_progress);
seekPlayerProgress.requestFocus();
seekPlayerProgress.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
if (!fromUser) {
// We're not interested in programmatically generated changes to
// the progress bar's position.
return;
}
exoPlayer.seekTo(progress*1000);
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
seekPlayerProgress.setMax(0);
seekPlayerProgress.setMax((int) exoPlayer.getDuration()/1000);
}
}
值得一看的是.FormulaR1C1属性,这在VBA中可能更为明确。如果您不使用FormulaR1C1语法,请注意绝对/相对地址。
myRange.Formula = "=INT(IFERROR(VLOOKUP(A:A,[sheet.xls]Sheet1!B:F,5,FALSE),0))"
如果您不知道如何使用VBA进行操作,请使用Macro Recorder。它的输出糟糕透顶,始终需要清理,但精通后,您会在5秒钟内得到答案,这是一种易于学习的工具。
最终,在一个单元格中手动输入公式-在X2中输入-然后在“即时”窗口中,键入mySheet.Range("X2").Formula = "=INT(IFERROR(VLOOKUP($A:$A,[sheet.xls]Sheet1!$B:$F,5,FALSE),0))"
(或Print range("x2").Formula
)以查看要放入代码中的确切公式。 / p>