Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 7788073
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 1, 20262026-06-01T20:52:37+00:00 2026-06-01T20:52:37+00:00

Is there a clever way using VBA or a formula to find k and

  • 0

Is there a clever way using VBA or a formula to find “k” and “m” variables in a kx+m string?

There are several scenarios for how the kx+m string can look, e.g.:

312*x+12
12+x*2
-4-x

and so on. I’m pretty sure I can solve this by writing very complicating formulas in Excel, but I’m thinking maybe someone has already solved this and similar problems. Here is my best shot so far, but it doesn’t handle all situations yet (like when there are two minuses in the kx+m string:

=TRIM(IF(NOT(ISERROR(SEARCH("~+";F5)));
IF(SEARCH("~+";F5)>SEARCH("~*";F5);RIGHT(F5;LEN(F5)-SEARCH("~+";F5));LEFT(F5;SEARCH("~+";F5)-1));
IF(NOT(ISERROR(SEARCH("~-";F5)));
IF(SEARCH("~-";F5)>SEARCH("~*";F5);RIGHT(F5;LEN(F5)-SEARCH("~-";F5)+1);LEFT(F5;SEARCH("~*";F5)-1));"")))

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-01T20:52:39+00:00Added an answer on June 1, 2026 at 8:52 pm

    I’m sure this will help you 🙂

    Put this function in a Module:

    Function FindKXPlusM(ByVal str As String) As String
        Dim K As String, M As String
        Dim regex As Object, matches As Object, sm As Object
    
        '' remove unwanted spaces from input string (if any)
        str = Replace(str, " ", "")
    
        '' create an instance of RegEx object.
        '' I'm using late binding here, but you can use early binding too.
        Set regex = CreateObject("VBScript.RegExp")
        regex.IgnoreCase = True
        regex.Global = True
    
        '' test for kx+m or xk+m types
        regex.Pattern = "^(-?\d*)\*?x([\+-]?\d+)?$|^x\*(-?\d+)([\+-]?\d+)?$"
        Set matches = regex.Execute(str)
        If matches.Count >= 1 Then
            Set sm = matches(0).SubMatches
            K = sm(0)
            M = sm(1)
            If K = "" Then K = sm(2)
            If M = "" Then M = sm(3)
            If K = "-" Or K = "+" Or K = "" Then K = K & "1"
            If M = "" Then M = "0"
        Else
            '' test for m+kx or m+xk types
            regex.Pattern = "^(-?\d+)[\+-]x\*([\+-]?\d+)$|^(-?\d+)([\+-]\d*)\*?x$"
            Set matches = regex.Execute(str)
            If matches.Count >= 1 Then
                Set sm = matches(0).SubMatches
                M = sm(0)
                K = sm(1)
                If M = "" Then M = sm(2)
                If K = "" Then K = sm(3)
                If K = "-" Or K = "+" Or K = "" Then K = K & "1"
                If M = "" Then M = "0"
            End If
        End If
        K = Replace(K, "+", "")
        M = Replace(M, "+", "")
    
        '' the values found are in K & M.
        '' I output here in this format only for showing sample.
        FindKXPlusM = " K = " & K & "         M = " & M
    End Function
    

    Then you can either call it from a Macro
    e.g. like this:

    Sub Test()
        Debug.Print FindKXPlusM("x*312+12")
    End Sub
    

    Or use it like a formula.
    e.g. by putting this in a cell:

    =FindKXPlusM(B1)
    

    I like the second way (less work :P)

    I tested it with various values and here’s a screenshot of what I get:

    Screenshot of Find KX+M Formula

    Hope this helps 🙂

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

Is there a clever way to structure my WCF service, such that I can
Is there a clever/tricky way to analyze if a string represented IP address is
Is there a clever way of stopping direct page calls in ASP.NET? (Page functionality,
Is there a clever way of adding XML serialization instructions without modifying the serialized
I'd like to shorten the following method. Is there any clever way to do
http://en.wikipedia.org/wiki/Upsert Insert Update stored proc on SQL Server Is there some clever way to
Does anyone know a clever way to create even columns of text using php?
Is there a cleaner, more clever way to do this? I'm hitting a DB
Is there some clever way of getting the date and time of when the
Anybody come across a clever way of closing a view in a viewmodel using

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.