首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在VBA中查找条件循环中的第一个和最后一个值

在VBA中查找条件循环中的第一个和最后一个值,可以通过以下步骤实现:

  1. 首先,定义一个变量来存储第一个值和最后一个值。例如,可以使用两个变量firstValue和lastValue。
  2. 在循环开始之前,将firstValue和lastValue初始化为一个初始值,例如将它们都设置为0或空。
  3. 在循环中,使用条件语句来判断当前值是否满足条件。如果满足条件,则将当前值赋给firstValue,并将lastValue更新为当前值。
  4. 继续循环,直到所有的值都被遍历完。
  5. 循环结束后,firstValue将存储第一个满足条件的值,而lastValue将存储最后一个满足条件的值。

以下是一个示例代码:

代码语言:txt
复制
Sub FindFirstAndLastValue()
    Dim firstValue As Variant
    Dim lastValue As Variant
    Dim currentValue As Variant
    
    firstValue = 0
    lastValue = 0
    
    ' 假设要查找的值在A1:A10范围内
    For Each cell In Range("A1:A10")
        currentValue = cell.Value
        
        ' 判断当前值是否满足条件
        If currentValue = "条件" Then
            ' 如果firstValue还没有被赋值,则将当前值赋给firstValue
            If firstValue = 0 Then
                firstValue = currentValue
            End If
            
            ' 将当前值赋给lastValue,以便更新最后一个满足条件的值
            lastValue = currentValue
        End If
    Next cell
    
    ' 输出结果
    MsgBox "第一个满足条件的值为:" & firstValue & vbCrLf & "最后一个满足条件的值为:" & lastValue
End Sub

在上述示例代码中,我们假设要查找的值在A1:A10范围内,并且满足条件的值为"条件"。你可以根据实际情况修改代码中的范围和条件。

请注意,这只是一个简单的示例代码,实际应用中可能需要根据具体需求进行适当的修改和优化。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

在排序数组中查找元素的第一个和最后一个位置

前言: 这是一道给很经典的二分查找题目,并且该二分查找的算法不同于简单二分,是二分查找的进阶版本。 一、题目描述 34....在排序数组中查找元素的第一个和最后一个位置 给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。...第二步就是普通二分算法的代码 注意这里有一个细节,跟普通二分查找算法不同,也是后面细节的“万恶之源”。...其实上面大体结构上是跟普通二分区别不大的,但下面的细节处理是进阶二分的精髓。 1、处理循环条件 这里的循环条件跟处理右端点是一致的,不能写等号,当判断等号时就会死循环!...因为左端点是将数据分为小于和大于等于,所以right = mid,如果这里采用第二种求中点方法,就会造成死循环,right的值一直都没有变化! 上面就是讲解左端点的解法,右端点也是大同小异。

10410

在排序数组中查找元素的第一个和最后一个位置

在排序数组中查找元素的第一个和最后一个位置 给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。...刚刚接触二分搜索的同学不建议上来就像如果用一个二分来查找左右边界,很容易把自己绕进去,建议扎扎实实的写两个二分分别找左边界和右边界 寻找右边界 先来寻找右边界,至于二分查找,如果看过704.二分查找就会知道...target的下标(左边界)与第一个大于target的下标(右边界); # 2、如果左边界的下标 ,否则找到第一个大于target的下标 if nums[middle] > target or (lower and nums[middle] >=...target的下标leftBorder; # 2、在 nums 数组中二分查找得到第一个大于等于 target+1的下标, 减1则得到rightBorder; # 3、如果开始位置在数组的右边或者不存在

4.7K20
  • 刷题2:在数组中查找元素的第一个和最后一个位置

    题目:给定一个的整数数组 nums, 和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。...题目解析: 1.给定一个数组,确定的是一个数组, 数组是整数,那么我们可以知道,那么target的也是整数。...2.要求target的在数组中开始位置和结束位置,我们可以先找出来target的在list里面的下标位置,把这些下标位置放到list里面,我们去取list里面的第一个元素和最后一个元素,就是对应的开始位置和结束位置...那么我们就可以上手去实现我们的代码了。 从这期开始,我们的代码将用python 和java两个版本去实现,同时从两方面去提高我们的,同时 也面向了两门语言的学习者。...那么我们测试完毕,根据测试覆盖率来说,我们目前的测试是已经完成了覆盖了百分之百的路径和代码。 后续会陆续给大家分享更多的题目,更多的代码,大家一起成长,一起刷题。

    2K20

    LeetCode-34-在排序数组中查找元素的第一个和最后一个位置

    # LeetCode-34-在排序数组中查找元素的第一个和最后一个位置 给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。...你的算法时间复杂度必须是 O(log n) 级别。 如果数组中不存在目标值,返回 [-1, -1]。...target,等于则返回[0,0],否则返回[-1,-1] 初始化头尾指针 移动头指针,直到找到第一个等于target的位置,如果找完了都没有找到,返回[-1,-1] 移动尾指针,直到找到最后一个等于target...时,说明target在mid左方,end = mid-1 当nums[mid]==target时,说明左右边界有一个地方等于target,这时候只需要查找另外一个边界等于target的即可,可以进行循环移动查找...,最后返回[start,end]即可 如果没有找到,返回[-1,-1] 方法3、递归分治(low): 通过二分查找切分数组寻找左右子数组的target位置,迭代到只有一个,判断是否是目标值,返回一个都是当前

    2.3K20

    Leetcode No.34 在排序数组中查找元素的第一个和最后一个位置

    一、题目描述 给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target,返回 [-1, -1]。...-109 <= target <= 109 二、解题思路 使用二分法查找第一个位置,初始化两个变量low=0,hight=nums.length-1 1、当low>high时,表示没有找到,返回-1...nums[mid]时,说明目标值在左侧,往左侧递归查找,否则往右侧递归查找 查找最后一个位置同理,唯一不同的是第4、5步 4、假如nums[mid]等于target且nums[mid]比相邻的右侧元素小...mid-1]<nums[mid])){ return mid; } if(target<=nums[mid]){ //寻找第一个位置...mid]<nums[mid+1]){ return mid; } if(target>=nums[mid]){ //寻找最后一个位置

    1.9K10

    python 在排序数组中查找元素的第一个和最后一个位置 多种解法

    二分查找:基于二分查找的算法可以在 O(log n) 的时间复杂度内解决该问题。具体实现方式是,先使用二分查找找到该元素的位置,然后向左和向右扩展,直到找到第一个和最后一个位置。...target and nums[rightIdx] == target: return [leftIdx, rightIdx] return [-1, -1] 线性扫描:线性扫描的思路是从左到右遍历数组...,记录第一次出现目标值的位置,然后继续遍历数组,直到找到最后一次出现目标值的位置,代码如下: def searchRange(nums, target): first, last = -1, -...first = i last = i return [first, last] 使用 Python 内置函数:Python 中有内置函数 bisect_left 和...bisect_right 可以帮助我们实现二分查找。

    8510

    leetcode34-在排序数组中查找元素的第一个和最后一个位置

    前言 今天刷的题目是:在排序数组中查找元素的第一个和最后一个位置,这道题目在最开始AC以后,然后做了两步的优化操作,供大家参考。...题目 leetcode-34:在排序数组中查找元素的第一个和最后一个位置 分类(tag):二分查找这一类 英文链接:https://leetcode.com/problems/find-first-and-last-position-of-element-in-sorted-array...nums,和一个目标值 target。...找出给定目标值在数组中的开始位置和结束位置。 你的算法时间复杂度必须是 O(log n) 级别。 如果数组中不存在目标值,返回 [-1, -1]。...; 首先就是找最左侧的下标,利用二分查找首先是找到有一个值是与目标值target是相等的,然后因为是找最左侧的下标,所以把right=mid-1来一直往左边去逼近最左侧的值; 至于找最右侧的下标就是,将

    2.6K30

    在排序数组中查找元素的第一个和最后一个位置

    前言 今天主要讲解的内容是:如何在已排序的数组中查找元素的第一个和最后一个位置。以 leetcode 34 题作为例题,提供二分查找的解题思路,供大家参考。...1),不断向 mid 的左侧收缩,最后达到锁定左边界(元素的第一个位置)的目的; 如何查找元素的最后一个位置?...同查找元素的第一个位置类似,在查找到数组中某元素值等于目标值 target 时,不立即返回,通过增大查找区间的下边界 low (令 low = mid + 1),不断向 mid 的右侧收缩,最后达到锁定右边界...举栗 以 nums = [5,7,7,8,8,10], target = 8 为栗子,通过下图来找出目标值 8 在数组中出现的第一个和最后一个位置。...查找 8 出现的最后一个位置: start: 前两步跟查找 8 出现的第一个位置一样 ?

    2.6K20

    在排序数组中查找元素的第一个和最后一个位置(leetcode34)

    给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target,返回 [-1, -1]。...示例 1: 输入:nums = [5,7,7,8,8,10], target = 8 输出:[3,4] 解析: 方法一:二分查找 二分查找中,寻找leftIdx 即为在数组中寻找第一个大于等于 target...的下标,寻找 rightIdx 即为在数组中寻找第一个大于target 的下标,然后将下标减一。...两者的判断条件不同,为了代码的复用,我们定义 binarySearch(nums, target, lower) 表示在 nums 数组中二分查找 target 的位置,如果 lower 为 true,...则查找第一个大于等于 target 的下标,否则查找第一个大于target 的下标。

    1.8K10

    在排序数组中查找元素的第一个和最后一个位置--题解

    在排序数组中查找元素的第一个和最后一个位置 给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。...如果数组中不存在目标值 target,返回 [-1, -1]。 进阶: 你可以设计并实现时间复杂度为 O(log n) 的算法解决此问题吗?...示例 3: 输入:nums = [], target = 0 输出:[-1,-1] 提示: 0 <= nums.length <= 105 -109 <= nums[i] <= 109 nums 是一个非递减数组...mid - 1 } else if nums[mid] == target { end = mid } else { start = mid + 1 } } //此处防止数组第一个数是...target int) int { start, end := 0, len(nums)-1 for start < end { //此处注意,为了防止 start=mid的问题

    1.9K30

    LeetCode - #34 在排序数组中查找元素的第一个和最后一个位置(Top 100)

    LeetCode 算法到目前我们已经更新了 33 期,我们会保持更新时间和进度(周一、周三、周五早上 9:00 发布),每期的内容不多,我们希望大家可以在上班路上阅读,长久积累会有很大提升。...如果大家有建议和意见欢迎在文末留言,我们会尽力满足大家的需求。 难度水平:中等 1. 描述 给定一个按照升序排列的整数数组 nums,和一个目标值 target。...找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target,返回 [-1, -1]。 进阶: 你可以设计并实现时间复杂度为 O(log n) 的算法解决此问题吗? 2....示例 2 输入:nums = [5,7,7,8,8,10], target = 6 输出:[-1,-1] 示例 3 输入:nums = [], target = 0 输出:[-1,-1] 约束条件...: 0 <= nums.length <= 10^5 -10^9 <= nums[i] <= 10^9 nums 是一个非递减数组 -10^9 <= target <= 10^9 3.

    1.5K20

    ​LeetCode刷题实战34:在排序数组中查找元素的第一个和最后一个位置

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试。所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 !...今天和大家聊的问题叫做在排序数组中查找元素的第一个和最后一个位置,我们先来看题面: https://leetcode-cn.com/problems/find-first-and-last-position-of-element-in-sorted-array...题意 给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。 你的算法时间复杂度必须是 O(log n) 级别。...版本1:是指在二分法进行时,就判读是否有等于target的,但是找到的target不知道是最左边的数还是最右边的数,所以,通过找到这个数再找出相应的边界值....版本2:是指二分法执行完毕,返回target在最左边的位置,在求出另一个边界! 关于详细说明,请看这篇[二分搜索](二分查找有几种写法?它们的区别是什么?

    1.2K20
    领券