入黎免費幫你砌excel/教你formula (10)

289 回覆
9 Like 3 Dislike
2024-04-07 22:47:12
再加多個 if 囉
2024-04-08 00:42:43
唔知你有無unique
="assortment " & MATCH($A2, UNIQUE($A$2:$A2)) + 4
2024-04-08 12:08:05
2024-04-08 12:12:56
如果有D係文字格式
要轉返做時間格式先得(實際係小數, 1嘅時候即24小時)
再SUM

老實講我都睇唔明係咩
5h 4.80m即係咩
2024-04-08 12:18:43
同埋你哩D唔係叫通用格式
時間格式係1:23:45咁樣
通用格式會顯示為小數
2024-04-08 12:38:03
睇明你D格式啦
用VBA
將下面個FUCNTION寫入VBA MODULE就用得
Sub Test()可以唔洗
@PYTHON數據大師 請問以下格式的時間怎樣用VBA變回數值格式(1d=1)
1d 2h 30.0m 即1日2小時30分
2h 30.0m 即2小時30分

在VBA中,要将类似 "1d 2h 30.0m" 这样的字符串转换为以天为单位的数值格式,您可以编写一个函数来解析字符串,并将各个部分转换为与一天的相应分数。以下是一个简单的VBA函数实现这一点的示例:
Function TimeStringToDays(timeStr As String) As Double
    Dim daysPart As String
    Dim hoursPart As String
    Dim minutesPart As String
    Dim dayValue As Double
    Dim hourValue As Double
    Dim minuteValue As Double
    
    ' 查找日、时、分的位置
    Dim dayPos As Integer
    Dim hourPos As Integer
    Dim minutePos As Integer
    
    dayPos = InStr(timeStr, "d")
    hourPos = InStr(timeStr, "h")
    minutePos = InStr(timeStr, "m")
    
    ' 提取日、时、分的值
    If dayPos > 0 Then
        daysPart = Trim(Left(timeStr, dayPos - 1))
        dayValue = Val(daysPart)
    Else
        dayValue = 0
    End If
    
    If hourPos > 0 Then
        ' 从日的位置或字符串起点直到小时标记之前的位置
        hoursPart = Trim(Mid(timeStr, IIf(dayPos > 0, dayPos + 1, 1), hourPos - IIf(dayPos > 0, dayPos + 1, 1)))
        hourValue = Val(hoursPart) / 24 ' 1小时 = 1/24天
    Else
        hourValue = 0
    End If
    
    If minutePos > 0 Then
        ' 从小时的位置或字符串起点直到分钟标记之前的位置
        minutesPart = Trim(Mid(timeStr, IIf(hourPos > 0, hourPos + 1, 1), minutePos - IIf(hourPos > 0, hourPos + 1, 1)))
        minuteValue = Val(minutesPart) / 1440 ' 1分钟 = 1/(24 * 60)天
    Else
        minuteValue = 0
    End If
    
    ' 计算总天数
    TimeStringToDays = dayValue + hourValue + minuteValue
End Function

使用该函数的方法如下:
Sub Test()
    Dim timeValue As String
    timeValue = "1d 2h 30.0m"
    Debug.Print TimeStringToDays(timeValue) ' 打印结果应该接近 1.10417 (即 1 + 2/24 + 30/(24 * 60))
    
    timeValue = "2h 30.0m"
    Debug.Print TimeStringToDays(timeValue) ' 打印结果应该接近 0.10417 (即 2/24 + 30/(24 * 60))
End Sub

这个函数首先查找表示日、时和分的位置,并基于这些位置来提取对应的数值。之后,将小时和分钟数值转换为以天为单位的分数形式,并计算总和。这样,我们就可以得到用天表示的时间总量。请注意,需要根据您具体的时间格式调整代码中字符串解析的逻辑。
@PYTHON數據大師 我想對EXCEL一個範圍的儲存格套用上面的TimeStringToDays function

要在Excel中对一个范围的单元格应用自定义的 TimeStringToDays 函数,您可以先将这个函数保存在Excel的VBA模块中,然后像使用其他Excel函数一样在单元格中引用它。以下是详细步骤:
打开Excel工作簿。
按 Alt + F11 打开VBA编辑器。
在VBA编辑器中,选择 插入 > 模块,新建一个模块。
将 TimeStringToDays 函数的代码复制粘贴到新模块中。
保存VBA代码并关闭VBA编辑器。
回到Excel工作表,选择要应用函数的单元格。
在单元格中输入公式,比如说 =TimeStringToDays(A1),其中 A1 是包含时间字符串的单元格。
如果您要对工作表上的多个单元格应用这个函数,您可以:
单独为每个单元格输入公式。
或者,输入第一个公式后,将该单元格拖动向下或向右以自动填充其他单元格(确保范围内的单元格地址是相对引用,不要误用绝对引用)。
例如,如果您有一个时间字符串列表在A1:A10,您可以在B1输入以下公式:
=TimeStringToDays(A1)

然后点击该单元格右下角的填充把手,向下拖动到B10,这样B1:B10就会自动填充上对应的转换结果。
请注意,此自定义函数会将返回的时间表示为小数点后的天数,你可以根据需要在Excel中格式化这些单元格,使数值按照更易读的方式显示(如:小数点后保留两位数等)。
2024-04-08 16:34:16
2024-04-08 16:49:12
2024-04-08 20:27:58
想問點樣excel快速圖片定位
我份份report都是一個模再跟order再換相
點先可以唔洗成日一插入相之後再校sizethanks much
2024-04-08 21:58:41
唔明咩叫再校SIZE
你入落去張圖本身幾大, 入落去就係幾大
不過都係VBA可以解決
2024-04-09 00:24:59
個尺寸我指
我留左一個格for 一張相
但每次插相入去 張相都成個Mon咁大
要慢慢拉返細同擺位
2024-04-09 00:54:07
你自己將原檔縮細尺寸先囉
2024-04-09 00:59:39
前幾頁先有巴打問過
係咪想咁?
https://www.youtube.com/watch?v=5MdZOu9VQgY

要用VBA
你可以試吓照抄佢code,有咩唔明/想改再上黎問
2024-04-10 00:27:49
求其寫左個, 由B2開始向下逐個cell都插入一張圖而且fit to cell

Sub Insert_Pics_FitToCells()
    Dim PicPath As Variant
    Dim i, j As Integer
    Dim pic As Picture
    Dim StartRange, r As Range
    Set StartRange = Range("B2")
    j = 0
    PicPath = Application.GetOpenFilename(MultiSelect:=True)
    If IsArray(PicPath) Then
        For i = LBound(PicPath) To UBound(PicPath)
        Debug.Print "Inserting " & PicPath(i)
            Set r = StartRange.Offset(j, 0)
            Set pic = ActiveSheet.Pictures.Insert(PicPath(i))
            With pic
                .ShapeRange.LockAspectRatio = msoFalse
                .Left = r.Left
                .Top = r.Top
                .Width = r.Width
                .Height = r.Height
                .Select
            End With
            j = j + 1
        Next
    End If
End Sub
2024-04-10 18:10:12
進化版, 識得自動清空所有圖片 + 自動跟圖adjust row height
Sub Insert_Pics_FitToCellsV2()
    Dim PicPath As Variant
    Dim i, j As Integer
    Dim pic As Picture
    Dim StartRange, r As Range
    Set StartRange = Range("B2") '<--------自己改返B2做開始個Cell 
    j = 0
    PicPath = Application.GetOpenFilename(MultiSelect:=True)
    If IsArray(PicPath) Then
        ActiveSheet.Pictures.Delete
        For i = LBound(PicPath) To UBound(PicPath)
        Debug.Print "Inserting " & PicPath(i)
            Set r = StartRange.Offset(j, 0)
            Set pic = ActiveSheet.Pictures.Insert(PicPath(i))
            With pic
                .Left = r.Left
                .Top = r.Top
                .Width = r.Width
                r.RowHeight = .Height
                .Select
            End With
            j = j + 1
        Next
    End If
End Sub
2024-04-11 12:53:40
我睇睇先 多謝巴打
2024-04-12 23:55:26
有四種不同數量水果:
a:8個
b:7個
c:1個
d:1個

有四種可盛載不同數量水果容器:
容器1:可盛16個a
容器2:可盛8個a,8個c
容器3:可盛2個d,總數8個a+b

想搵出:
容器1,2,3各最少所需數量,想問下set 唔set到formula

條件
1. 容器所需數量必為整數
2. 所有水果必有容器盛載
3. 每種水果可放在不同容器上
4. 容器容量應用盡,不要有浪費
2024-04-13 01:01:37
似規劃求解, 不過唔記得點整
2024-04-17 12:07:18
因為佢當中有啲係計埋日數
for example
A6
1d 3h 32.40m

請問巴打如果將個 "d " 計埋落去, 條formula 應該點改
2024-04-17 12:24:09
似數學問題多過Excel問題
2024-04-21 02:19:07
想問下用excel整line chart
堆data係一堆日子時間+數字 好似下面咁樣
個line chart圖想淨係取值當日最latest個條row黎整
有無咩方法可以做到理想既個個效果

原data:
Date, Account Summary
Apr-1 11:45, $10
Apr-1 12:26, $11
Apr-1 15:38, $19
Apr-2 12:38, $30
Apr-2 16:39, $35
Apr-3 18:38, $40
Apr-3 19:28, $45
Apr-4 20:18, $50

理想:
Date, Account Summary
Apr-1 15:38, $19
Apr-2 16:39, $35
Apr-3 19:28, $45
Apr-4 20:18, $50
2024-04-21 06:32:54
發覺比想像中複雜
Logic上應該無問題
=LET(input_range, A2:A10,
REDUCE(0,input_range,
LAMBDA(a,b,
a+LET(
days, --TEXTBEFORE(b,"d",,,,0),
hrs, --TEXTBEFORE(TEXTAFTER(b,"d",,,,b),"h",,,,0),
mins, --TEXTBEFORE(TEXTAFTER(b,"d",,,,TEXTAFTER(b,"h",,,,b)),"m",,,,0),
24*days + hrs + mins/60))))
2024-04-21 09:10:14
最簡單方法
將D DATA複製去新SHEET先(如果唔想影響原有TABLE)
隔1行COLUMN
IF(A2=A3, 0,1), 放係D2
拉落去到底
篩選COLUMN D 是0
選哂所有ROWS按DEL(唔係刪去ROWS)
再按DATE排序
刪去COLUMN D
2024-04-21 12:48:35
又或者可以


先用 Unique() get 咗 Date 嘅 List
再用 Maxif() get 每一個 Date 嘅最後一個 Time
咁有 Date 有 Time 咁 Index() & Match() 就 Account Summary
2024-04-21 19:06:56
其實我研究左一陣, 不過唔知佢D日期係文字定數字格式卡住左
假設係文字格式先: (自己改$A$2:$B$9, 唔包header)
=LET(
DataRange, $A$2:$B$9,
DateCol, CHOOSECOLS(DataRange,1),
PriceCol, CHOOSECOLS(DataRange,2),
SortedRange, SORTBY(DataRange, DateCol, -1),
DateOnly, UNIQUE(TEXTBEFORE(DateCol, " ")),
      HSTACK(
            XLOOKUP(DateOnly & "*", CHOOSECOLS(SortedRange,1), CHOOSECOLS(SortedRange,1),"",2),
            XLOOKUP(DateOnly & "*", CHOOSECOLS(SortedRange,1), CHOOSECOLS(SortedRange,2),"",2)))

我方法係掉轉跟Date/Time sort一次先
之後拆Date出黎再unique
最後就xlookup搵返每日第一個match
唔知點解好似搞到好複雜咁
吹水台自選台熱 門最 新手機台時事台政事台World體育台娛樂台動漫台Apps台遊戲台影視台講故台健康台感情台家庭台潮流台美容台上班台財經台房屋台飲食台旅遊台學術台校園台汽車台音樂台創意台硬件台電器台攝影台玩具台寵物台軟件台活動台電訊台直播台站務台黑 洞