## Description

**MID** returns a specific number of characters from a text string, starting at the position you specify, based on the number of characters you specify.

**MIDB** returns a specific number of characters from a text string, starting at the position you specify, based on the number of bytes you specify.

**What is the difference between MID and MIDB?**

MID is intended for use with languages that use the single-byte character set (SBCS), whereas MIDB is intended for use with languages that use the double-byte character set (DBCS). The default language setting on your computer affects the return value in the following way:

**MID**always counts each character, whether single-byte or double-byte, as 1, no matter what the default language setting is.**MIDB**counts each double-byte character as 2 when you have enabled the editing of a language that supports DBCS and then set it as the default language. Otherwise, MIDB counts each character as 1.

The languages that support DBCS include Chinese (Simplified), Chinese (Traditional), Korean, and Japanese.

## Syntax

`MID(`*text*, *start_num*, *num_chars*)

`MIDB(`*text*, *start_num*, *num_bytes*)

## Parameters

**Text** Required. The text string containing the characters you want to extract.

**Start_num** Required. The position of the first character you want to extract in text. The first character in text has start_num 1, and so on.

**Num_chars** Required. Specifies the number of characters you want MID to return from text.

**Num_bytes** Required. Specifies the number of characters you want MIDB to return from text, in bytes.

## Remarks

- If start_num is greater than the length of text, MID returns "" (empty text).
- If start_num is less than the length of text, but start_num plus num_chars exceeds the length of text, MID returns the characters up to the end of text.
- If start_num is less than 1, MID returns the #VALUE! error value.
- If num_chars is negative, MID returns the #VALUE! error value.
- If num_bytes is negative, MIDB returns the #VALUE! error value.

## Examples

### Example 1: MID

The example may be easier to understand if you copy the example data (include header) in the following table, and paste it in cell **A1** of a new Excel worksheet. If you need to, you can adjust the column widths to see all the data.

Formula | Result | Description |
---|---|---|

`=MID("Excel 2019",1,5)` |
Excel | Five characters from the string, starting at the first character. |

`=MID("Excel 2019",7,4)` |
2019 | Four characters from the string, starting at the seventh character. |

`=MID("Excel 2019",11,5)` |
start_num is greater than the length of text, MID returns "". | |

`=MID("Excel 2019",4,15)` |
el 2019 | MID returns the characters from start_num to the end of text. |

`=MID("Excel 2019",0,5)` |
#VALUE! | start_num is less than 1, MID returns the #VALUE! error value. |

`=MID("Excel 2019",-1,5)` |
#VALUE! | num_chars is negative, MID returns the #VALUE! error value. |

### Example 2: MIDB

`=MIDB("中国香港",3,4)`

equals "`国香`

". Because each character is counted as 2; the second argument specifies a starting point at the three byte, which is the second character, and the third argument specifies a length of 4 bytes, which is two character.

`=MID("中国香港",3,4)`

equals "`香港`

". Because each character is counted as 1; the second argument specifies a starting point at the third character, and the third argument specifies a length of 4 characters. MID returns "`香港`

" no matter what the default language setting is on your computer.

### Convert text to number

MID function returns text values, sometimes, if you want to returns number values, you may add "`--`

" in the formula. For example:

`=--MID("Excel 2013",6,5)`

equals `2013`

.

### Sum the digits of a number

A worksheet contains digit numbers in column A. The digits in each number need to be added together and the result shown in column B. To do so, the digits of a cell are extracted by the MID function and summed.

The example may be easier to understand if you copy the example data (include header) in the following table, and paste it in cell **A1** of a new Excel worksheet. If you need to, you can adjust the column widths to see all the data.

Data | Formula | Result | Description |
---|---|---|---|

1111 | `{=SUM(--MID(A2,ROW(INDIRECT("1:"&LEN(A2))),1))}` |
4 | Array formula |

2222 | `{=SUM(--MID(A3,ROW(INDIRECT("1:"&LEN(A3))),1))}` |
8 | Array formula |

33333 | `{=SUM(--MID(A4,ROW(INDIRECT("1:"&LEN(A4))),1))}` |
15 | Array formula |

12345 | `{=SUM(--MID(A5,ROW(INDIRECT("1:"&LEN(A5))),1))}` |
15 | Array formula |

The formula in the example must be entered as an **array formula**. After copying the formula to a blank cell, select the cell, press `F2`, and then press `CTRL`+`SHIFT`+`ENTER`.

### Separate last name from first name

The example may be easier to understand if you copy the example data (include header) in the following table, and paste it in cell **A1** of a new Excel worksheet. If you need to, you can adjust the column widths to see all the data.

Name | Formula | Last Name |
---|---|---|

Dwayne Johnson | `=MID(A2,SEARCH(" ",A2)+1,100)` |
Johnson |

Taylor Swift | `=MID(A3,SEARCH(" ",A3)+1,100)` |
Swift |

Leonardo DiCaprio | `=MID(A4,SEARCH(" ",A4)+1,100)` |
DiCaprio |

Vin Diesel | `=RIGHT(A5,LEN(A5)-SEARCH(" ",A5))` |
Diesel |

Kobe Bryant | `=RIGHT(A6,LEN(A6)-SEARCH(" ",A6))` |
Bryant |

The SEARCH function can be used to determine the space between the parts of the text string.

First, the **SEARCH** function returns the position of the space character inside a Name.

Next, the **MID** or **RIGHT** function returns the last name.